具有委托访问控制模式的单点登录

假设中型企业的RESTful API数量有限。 公司员工在公司防火墙后面时,可以通过Web应用程序访问这些API。 所有用户数据都存储在Microsoft Active Directory中,并且所有Web应用程序都连接到安全断言标记语言(SAML)2.0身份提供程序以对用户进行身份验证。 Web应用程序需要代表登录用户访问后端API。



2 这里的问题是最后一条语句:“ Web应用程序需要代表已登录的用户访问后端API。” 这表明需要访问授权协议:OAuth。 但是,用户不会将其凭据直接提供给Web应用程序-他们会通过SAML 2.0身份提供程序进行身份验证。

在这种情况下,您需要找到一种方法,可以将SAML 2.0 Web SSO协议中收到的SAML令牌交换为OAuth访问令牌,该令牌在OAuth 2.0规范的SAML授予类型中定义。 如上图的步骤3所示,一旦Web应用程序接收到SAML令牌,它就必须通过与OAuth授权服务器进行对话来将其与访问令牌交换。

授权服务器必须信任SAML 2.0身份提供程序。 Web应用程序获取访问令牌后,便可以使用它来访问后端API。 OAuth的SAML授予类型不提供刷新令牌。 OAuth授权发布的访问令牌的生存期必须与授权授权中使用的SAML令牌的生存期匹配。

用户使用有效的SAML令牌登录到Web应用程序后,Web应用程序从那里开始为用户创建会话,并且不必担心SAML令牌的寿命。 这可能会导致一些问题。 假设SAML令牌已过期,但用户在Web应用程序中仍具有有效的浏览器会话。 由于SAML令牌已过期,因此您可以预期用户登录时获得的相应OAuth访问令牌也已过期。 现在,如果Web应用程序尝试访问后端API,则该请求将被拒绝,因为访问令牌已过期。 在这种情况下,Web应用程序必须将用户重定向回SAML 2.0身份提供程序,获取新的SAML令牌,并将该令牌交换为新的访问令牌。 如果SAML 2.0身份提供者处的会话仍处于活动状态,则可以使此重定向对最终用户透明。

这是我的《 高级API安全性》一书中介绍的十种API安全性模式之一。 您可以从本书中找到有关此内容的更多详细信息。

翻译自: https://www.javacodegeeks.com/2014/10/single-sign-on-with-the-delegated-access-control-pattern.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值