为了账号安全,请及时绑定邮箱和手机立即绑定

在浏览器中处理 SAML IdP 响应和断言

在浏览器中处理 SAML IdP 响应和断言

隔江千里 2021-09-30 10:24:18
我有一个具有离线功能的单页 Web 应用程序(即它可以在不访问应用程序服务器的情况下工作)。我需要提供 SAML 身份验证,据我所知,身份提供者将通过 HTTP Post 将响应返回到我的应用程序服务器。我已经实现了一个 HTTP 端点(Java servlet),它接收 IdP 响应和断言并将用户登录到应用程序中,但当然,如果应用程序脱机使用,这将不起作用。有没有办法可以从浏览器中“处理”SAML 响应和断言以提供离线身份验证?“离线”是指无需访问我的应用程序的服务器,就可以访问 SAML 身份提供程序。这是因为我的应用程序在云中,而身份提供程序在客户的网络中。
查看完整描述

1 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

问题 1:有没有办法可以从浏览器中“处理”SAML 响应和断言以提供离线身份验证?


没有。你可以不是“过程”的SAML在浏览器内响应,并断言提供离线认证,因为脱机认证可以符合SAML的身份验证或SAML身份联合的以下两个要求。

(1) SAML 是一种基于 HTTP 的协议,它依赖于使用用户代理(例如 Web 浏览器)将 SAML 请求从 SAML 服务提供商 (SP) 重定向到 SAML 身份提供商 (IdP),并将 SAML 响应从SAML IdP 到 SAML SP。

浏览器将 SAML 响应和断言从 SAML IdP 传送到应用程序 SAML SP 处的断言使用者服务端点。

(2) 您的应用程序的 SAML SP 在收到来自 SAML IdP 的 SAML 断言之前不知道用户是谁。

收到 SAML 断言后,SAML SP 需要验证该断言是否来自有效的 SAML IdP,然后从该断言中解析必要的用户信息(例如,用户名、属性等),以便您的应用程序可以授予用户访问权限基于 SAML 响应携带的用户信息,由 SAML SP 提取。

如果没有由您的应用服务器托管的 SAML SP,您的应用程序将无法完成 SAML 身份验证。

问题 2:“离线”是指在无法访问我的应用程序服务器的情况下,可以访问 SAML 身份提供程序。这是因为我的应用程序在云中,而身份提供程序在客户的网络中。


SAML 利用用户代理(例如 Web 浏览器)将 SAML 请求从 SAML 服务提供商 (SP) 重定向到 SAML 身份提供商 (IdP),并将 SAML 响应从 SAML IdP 重定向到 SAML SP,因此,SAML允许您的应用程序位于云中,而身份提供商位于客户的网络中。

例如,我已成功使用本地 Shibboleth IdP(客户网络中的 SAML IdP)登录到 Amazon AWS 管理控制台(云中的应用程序),正如我在 SAML SSO 登录时对另一个 StackOverflow 问题ExpiredTokenException 的回答所示来自我本地 IdP 的 AWS

总之,您可以使用“身份提供者是客户的网络”来验证“您在云中的应用程序”。但是,您的应用程序的 SAML SP 需要“处理”SAML 响应和断言,验证 SAML 响应/断言的签名并从 SAML 响应/断言中提取用户信息。

换句话说,您不能依赖 Web 浏览器来“处理”SAML 响应和断言,因为 Web 浏览器无法存储 SAML IdP 的公共证书/密钥来验证 SAML 响应/断言的签名。


查看完整回答
反对 回复 2021-09-30
  • 1 回答
  • 0 关注
  • 398 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号