【问题标题】:Safely generate a SAML2 token in a client application without install signing certificate在客户端应用程序中安全生成 SAML2 令牌,无需安装签名证书
【发布时间】:2015-11-09 23:32:33
【问题描述】:

我有一个用户登录的客户端应用程序(Windows)。通过此应用程序,用户将希望使用单点登录 (SAML) 访问远程网站,并将通过 Microsoft WIF 进行身份验证。为此,用户将单击一个按钮,该按钮打开本地 Web 浏览器,生成 SAML 令牌(包含用户名和角色等)并向远程网站发送 HTTP POST 以访问它,并登录。

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

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

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

更新:

用户未使用 Windows 身份验证 (Kerberos) 对 Windows 应用程序进行身份验证,我们对用户名/密码数据库进行自定义 SQL 调用。

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

【问题讨论】:

    标签: single-sign-on wif saml-2.0


    【解决方案1】:

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

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

    当您在应用程序中打开 Web 视图时,所有这些都可以完成。起始 url 应该是 IDP 发起的 SSO 的 Identity Provider 端点,带有标识您要访问的服务的 url 参数。

    【讨论】:

    • win 应用不使用 Windows 身份验证(Kerberos),所以 STS 无法使用 kerberos(我认为)。
    • 我可以将用户名从 win 应用程序传递给 STS,STS 将启动并填充声明(角色)并生成/签署 SAML 令牌以发送出去。但是 win 应用程序首先如何安全地将用户名传递给 STS?
    • 您必须对 STS 进行身份验证才能安全地传递用户的身份。如果您的工作站是 Active Directory 域的一部分,则可以使用 Kerberos 对 STS 进行身份验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 2016-11-28
    • 2020-08-16
    • 2010-11-21
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多