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 响应/断言的签名。
添加回答
举报
