2015-11-05 56 views
0

我有一个用户登录的客户端应用程序(Windows)。在这个应用程序中,用户将希望使用单点登录(SAML)访问远程网站,并且将由Microsoft WIF进行身份验证。要做到这一点,用户将点击一个打开本地网页浏览器的按钮,生成一个SAML令牌(包含用户名和角色等),并向远程网站发出HTTP POST以访问它,并将其签入。安全地在客户端应用程序中生成SAML2令牌,无需安装签名证书

我希望用户能够根据Windows应用程序的凭据自动登录。

我大致知道如何生成SAML令牌,但假设这需要在本地PC上安装签名证书,该证书需要安装到我公司的所有PC中。

安装此证书似乎不太正确。我还能如何安全地允许用户生成SAML令牌,服务提供商将会接受(通过单点登录)?

UPDATE:

的用户没有通过验证到使用Windows身份验证(Kerberos的)Windows应用程序,我们做一个自定义的SQL调用用户名/密码的数据库。

在win应用程序中,我们将知道用户名和他们的角色,因此可以从此生成声明,或将其传递给远程STS以生成和签署SAML令牌。但是再次将这些数据传递给STS似乎又完全错误了。

回答

1

签名证书不得在用户桌面上。否则,任何用户都可能使用所需的用户标识生成SAML令牌。

你想要的是一个安全令牌服务(STS):一个身份提供者,它将通过Kerberos验证你的用户(因为你想重新使用登录用户的身份)并给你一个签名的SAML令牌。

所有这些都可以在您的应用程序中打开Web视图时完成。起始url应该是IDP启动的SSO的身份提供者端点,并带有用于标识要访问的服务的url参数。

+0

win应用程序不使用Windows身份验证(Kerberos),所以STS不能使用Kerberos(我认为)。 –

+0

我可以将用户名从win应用程序传递给STS,STS将关闭并填充声明(角色)并生成/签署SAML令牌发送出去。但是,如何赢得应用程序安全地将用户名传递给STS? –

+0

您必须向STS进行身份验证才能安全地传递用户的身份。如果您的工作站是Active Directory域的一部分,则可以使用Kerberos向STS进行身份验证。 –

相关问题