shimingxy e51f4ffcfe U
2020-03-08 09:00:25 +08:00

81 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<h2>1 SAML 介绍</h2>
SAML即安全断言标记语言英文全称是Security Assertion Markup Language。它是一个基于XML的标准用于在不同的安全域(security domain)之间用户身份验证和授权数据交换。在SAML标准定义了身份提供者(identity provider)和服务提供者(service provider),这两者构成了前面所说的不同的安全域。 SAML是OASIS组织安全服务技术委员会(Security Services Technical Committee)的产品。官方技术说明可参看OASIS Security Services (SAML) TC.
使用SAML在线服务供应商可以联系一个独立的网络身份认证提供者谁是试图访问受保护的内容的用户进行身份验证。
联邦是指两个或更多可信的业务合作伙伴组成的团体,其遵照的业务和技术协议允许来自联邦合作伙伴(成员公司)的用户以一种安全可靠的方式,无缝地访问另一家合作伙伴的资源。在联邦业务模型中(其中,服务是联邦化的,或可以与业务合作伙伴共享)根据有关实体间达成的协议一家公司的用户的身份将被转换以合法访问另一家公司的Web站点而另一家公司无需了解该用户的原始身份。
IDP认证中心提供了一个基于SAML的单点登录SSO服务作为身份提供者(Identity provider)控制用户名、密码和其他信息用于识别身份验证和授权用户的Web应用程序。
备注SAML应用集成需完成应用集成申请详见SAML相关内容。
通过SAML实现IDP 与其他合作伙伴的联邦身份认证。
<h5>流程说明图</h5>
<img src="{{ "/images/saml/saml1.png" | prepend: site.baseurl }}?{{ site.time | date: "%Y%m%d%H%M" }}" alt=""/>
<h3>SAML实现联邦身份认证各方职责</h3>
<table border="0" class="table table-striped table-bordered ">
<thead>
<th>IDP认证中心(Identity Provider/IDP)</th><th>合作伙伴(Service Provider/SP)</th>
</thead>
<tbody>
<tr>
<td>用户身份认证</td>
<td>安全断言判定</td>
</tr>
<tr>
<td>联邦身份安全断言</td>
<td>联邦身份维护</td>
</tr>
<tr>
<td>用户账号管理</td>
<td>服务提供和访问控制</td>
</tr>
</tbody>
</table>
IDP和SP预先完成证书的互信配置SAML认证基于断言断言基于证书的加密传递过程是安全的只有证书的持有者才能对断言进行解析
重要注意:SAML SSO解决方案仅适用于Web应用程序.
扩展阅读参看:官方技术说明<a href="https://wiki.oasis-open.org/security/FrontPage" title="https://wiki.oasis-open.org/security/FrontPage" target="_blank" rel="nofollow">SAML标准英文 </a> | <a href="http://en.wikipedia.org/wiki/Security_Assertion_Markup_Language" title="http://en.wikipedia.org/wiki/Security_Assertion_Markup_Language" target="_blank" rel="nofollow">SAML维基百科中文</a>
<h2>2 SP-Init SSO流程 </h2>
<img src="{{ "/images/saml/saml2.png" | prepend: site.baseurl }}?{{ site.time | date: "%Y%m%d%H%M" }}" alt=""/>
用户试图访问IDP的合作伙伴应用。
合作伙伴应用生成一个SAML身份验证请求。SAML请求编码并嵌入到URL IDP的SSO服务。RelayState参数包含编码的合作伙伴应用程序用户尝试访问的URL也被嵌入在SSO URL。这的RelayState参数就是要一个不透明的标识符不作任何修改或检查传回的。
合作伙伴发送重定向到用户的浏览器。重定向URL编码SAML身份验证请求的应提交到IDP的SSO服务。
IDP的SAML请求进行解码并提取两个谷歌的断言消费服务ACS和用户的目标URLRelayState参数的URL。
IDP的用户进行身份验证。IDP可以通过要求有效的登录凭据或通过检查有效的会话对用户进行身份验证。
IDP生成一个SAML响应其中包含身份验证的用户的用户名。按照SAML 2.0规范这种反应是公共和私人合作伙伴的DSA / RSA密钥数字签名的
IDP SAML响应和RelayState参数进行编码并将该信息返回到用户的浏览器。IDP提供了一种机制使浏览器可以转发信息到合作伙伴的ACS。
合作伙伴的ACS使用IDP的公钥验证SAML响应。如果成功验证的响应ACS将用户重定向的目标URL。
用户被重定向的目标URL并记录在合作伙伴应用程序。
<h2>3 IDP-Init SSO流程</h2>
<img src="{{ "/images/saml/saml3.png" | prepend: site.baseurl }}?{{ site.time | date: "%Y%m%d%H%M" }}" alt=""/>
IDP的用户进行身份验证。IDP可以通过要求有效的登录凭据或通过检查有效的会话对用户进行身份验证。
IDP生成一个SAML响应其中包含身份验证的用户的用户名。按照SAML 2.0规范这种反应是公共和私人合作伙伴的DSA / RSA密钥数字签名的。
IDP SAML响应和RelayState参数进行编码并将该信息返回到用户的浏览器。IDP提供了一种机制使浏览器可以转发信息到合作伙伴的ACS。
合作伙伴的ACS使用IDP的公钥验证SAML响应。如果成功验证的响应ACS将用户重定向的目标URL。
用户被重定向的目标URL并记录在合作伙伴应用程序。