【问题标题】:SAML 2.0 without a browser没有浏览器的 SAML 2.0
【发布时间】:2015-04-10 23:20:00
【问题描述】:

假设我的系统目前是这样的:

  1. Monolithic Web App:包含自己的帐户并依赖客户端使用(基本上)HTTP BasicAuth 登录。也就是说,用户名和密码正在传递给服务器。

  2. Thick Client:登录到上述应用程序,接收其后用于 REST API 调用的访问令牌。

基本上,我想把上面的变成这样的系统:

  1. SAML 2.0 IdP:身份记录系统

  2. 相同的 Web 应用程序,减去身份验证责任

  3. 胖客户端:未更改。 硬性要求

因此,至关重要的是,我不能让胖客户端执行标准 SAML 2.0 浏览器 SSO 重定向。有什么解决办法吗?本质上,我想要与 OAuth2 的 password_grant 相同的功能,但在 SAML 2.0 世界中。

做一些研究,我遇到了 SAML Enhanced Client or Proxy,但支持似乎参差不齐。令人沮丧的是,我在 WebApp 拥有明文格式的证书;有没有一些简单的方法可以使这项工作?

HTTP Artifact Binding 能解决问题吗?

【问题讨论】:

  • 此时,我将让网络应用程序使用 Watir 或 Mechanize 填写表格,单击提交并截屏响应。当然这是一个黑客,但没有看到任何选项,这里除了蟋蟀什么都没有。

标签: authentication identity saml delegation federation


【解决方案1】:

注意:这个问题最好在https://security.stackexchange.com/.

上提出

如果您无法更改胖客户端,则无法使用 SAML 或任何形式的基于浏览器的单点登录 (SSO)。就这么简单。

此外,您希望用户将其 SSO 凭据输入到胖客户端,然后通过 HTTP 基本身份验证将其发送并自动将其输入到表单中的方法是不安全的,原因如下:

  1. 用户的明文密码需要经过几个不应该看到的实例,而且很可能也会存储在胖客户端中。即使它是加密的(在传输中或静止时),这也比仅作为哈希存储在 IdP 上(以及用户的内存或密码管理器中)的密码安全。
  2. 期望用户在 IdP 登录表单以外的任何地方输入其 SSO 凭据会导致危险地使用凭据,从而使用户更容易受到网络钓鱼的影响。

如果您计划将 SSO 的 IdP 用于多个客户端,而不是这个传统的胖客户端,您可以使用类似应用程序密码

  1. 用户使用 SSO (SAML) 登录到 Web 应用程序
  2. 用户创建应用程序密码(也可以选择撤销)
  3. 然后将应用程序密码用于胖客户端。

“应用程序密码”可以是一个简单的唯一 ID(作为“用户名”输入)和一个随机生成的长字符串(作为“密码”发送)的组合。如果胖客户端可以存储这些凭据,那么这种方法会有点用户友好,尽管不如真正的 SSO 安全。

从长远来看,请考虑更新胖客户端。

【讨论】:

    猜你喜欢
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    相关资源
    最近更新 更多