Authentication 不带浏览器的SAML2.0

Authentication 不带浏览器的SAML2.0,authentication,identity,saml,delegation,federation,Authentication,Identity,Saml,Delegation,Federation,假设我有一个系统,目前是这样的: 单片Web应用程序:包含自己的帐户,并依赖客户端使用(基本上)HTTP BasicAuth登录。也就是说,用户名和密码将被传递到服务器 胖客户端:登录到上面的应用程序,接收访问令牌,然后用于REST API调用 基本上,我想将上述内容转换为此类系统: SAML2.0IDP:身份记录系统 相同的Web应用程序,减去身份验证责任 厚客户端:未更改 注意:这个问题最好在 如果不能更改胖客户端,则不能使用SAML或任何形式的基于浏览器的单点登录(SSO)。就这么简单 此

假设我有一个系统,目前是这样的:

  • 单片Web应用程序:包含自己的帐户,并依赖客户端使用(基本上)HTTP BasicAuth登录。也就是说,用户名和密码将被传递到服务器

  • 胖客户端:登录到上面的应用程序,接收访问令牌,然后用于REST API调用

  • 基本上,我想将上述内容转换为此类系统:

  • SAML2.0IDP:身份记录系统

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


  • 厚客户端:未更改 注意:这个问题最好在

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

    此外,您希望用户将其SSO凭据键入胖客户端,然后通过HTTP basic auth发送凭据并自动将其键入表单的方法是不安全的,原因有几个:

  • 用户的纯文本密码需要通过几个永远看不到它的实例传递,并且它可能还存储在胖客户端中。即使它是加密的(在传输中或静止时),这也不如密码仅作为散列存储在IdP上(以及在用户的内存或密码管理器中)更安全
  • 期望用户在IdP登录表单之外的任何地方输入SSO凭据会导致危险地使用凭据,这会使用户更容易受到钓鱼攻击
  • 如果计划将IdP for SSO用于多个客户端,而不是此传统厚客户端,则可以使用类似于应用程序密码的内容:

  • 用户使用SSO(SAML)登录到web应用
  • 用户创建应用程序密码(还可以选择撤销密码)
  • 然后将应用程序密码用于胖客户端
  • “应用程序密码”可以是一个简单的唯一ID(输入为“用户名”)和一个随机生成的长字符串(发送为“密码”)的组合。如果胖客户端可以存储这些凭据,那么这种方法将有点用户友好,尽管不如真正的SSO安全


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

    此时,我将让Web应用程序使用WATIR或机械化来填写表单,点击提交和屏幕抓取响应。当然,这是一个黑客,但没有看到任何选择,这里除了蟋蟀什么都没有。