我有一个用户登录的客户端应用程序(windows)。在此应用程序中,用户将希望使用单点登录(SAML)访问远程网站,并将由Microsoft WIF进行身份验证。要执行此操作,用户将单击打开本地Web浏览器的按钮,生成SAML令牌(包含用户名和角色等),并向远程网站发出HTTP POST以对其进行访问,并对其进行签名。
我希望用户根据他们在Windows应用程序中的凭据自动登录。
我大致知道如何生成SAML令牌,但假设这需要在本地PC上安装签名证书,这需要安装到我公司的所有PC中。
安装此证书似乎不太对。我还能如何安全地允许用户生成服务提供商接受的SAML令牌(通过单点登录)?
更新:
用户未使用Windows身份验证(Kerberos)对Windows应用程序进行身份验证,我们对用户名/密码数据库进行自定义SQL调用。
在win app中,我们将知道用户名及其角色,因此可以从中生成声明,或者将其传递给远程STS以生成并签署SAML令牌。但是再次将这些数据传递给STS似乎完全错了。
答案 0 :(得分:1)
签名证书不得位于用户桌面上。否则,任何用户都可能使用其想要的用户标识生成SAML令牌。
您需要的是安全令牌服务(STS):一种身份提供程序,它将通过Kerberos对您的用户进行身份验证(因为您希望重新使用已登录用户的身份)并为您提供已签名的SAML令牌。
当您在应用程序中打开Web视图时,可以完成所有这些操作。起始URL应该是IDP发起的SSO的身份提供者端点,其中url参数标识您要访问的服务。