文章分成三个部分:
第一部分简单介绍在AWS上配置以Azure AD作为认证方的关键配置
第二部分介绍一下SAML2.0认证流程
第三部分来讲一下SAML2 和 OAuth2 协议的区别。(不会涉及OIDC协议)

文章均是个人理解,恳请扶正

背景

为什么写这篇文章呢?

家里用docker安装了很多软件,每个软件都有自己独立的账密。用起来是真的麻烦。好在绝大部分软件都是支持LDAP认证的。那上个OpenLDAP家庭内部的SSO就“实现”了。同样的在企业内部也会有这样的问题,他们是怎么解决的呢, 就蛮好奇的查询了下。就以熟悉的AWS为例进行学习时了解到了SAML2 协议。但是几乎没有什么文章解释清楚了它和OAuth协议的异同。尝试写一篇文章来回答学习时的各个疑问。希望能温故知新,也为了年度目标再进一步。

以AWS作为认证提供方来配置AWS的SSO

我只会把一些关键节点的配置列出来。 详细的文档请参考:AWS IAM Identity Center

Azure 平台配置:

  <! -- Role 相关的格式--> 
  <Attribute Name="https://aws.amazon.com/SAML/Attributes/Role">
    <AttributeValue>arn:aws:iam::account-number:role/role-name1,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue>
    <AttributeValue>arn:aws:iam::account-number:role/role-name2,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue>
    <AttributeValue>arn:aws:iam::account-number:role/role-name3,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue>
  </Attribute>

AWS 平台配置

使用方式:

介绍下SAML协议

在 SAML 协议中,涉及两个主体:

SAML 流程

saml 在第一步的例子中:

到这里熟悉OAuth的话, 会感觉这两个协议特别的相像。 下面一节就来看看两个协议的差异。

SAML2 和 OAuth2

这里仅仅讨论OAuth2协议, 不会涉及在其之上的OIDC协议。

目的: 认证和授权

适用场景:

对接/实现难度

基于以上内容,就导致SAML2对接起来会更容简单,但是实现一个SAML2 IdP就过于麻烦。

安全

最后

准备写的时候发现已经没有Azure和AWS的使用环境, 写第一部分的时候就挺烦的。原本计划直接删掉的。 各位就凑合着看吧。
AWS 蛮贴心的提供了AssumeRoleWithSAML API, 所以只要获取了SAML Response,就能以程序替代人来完成一些工作了。
就这么多, 辛苦你看到最后!