我正在尝试通过在我的网站中作为服务提供商 (SP) 和 Okta env 实施 SAML 2.0 来与 Okta SSO 集成。作为我的身份提供者 (IDP),我无法理解如何配置我的 IDP 以针对每个 Auth 请求返回用户所在的组。如何完成?
另外,是否可以在我的 IDP 中有服务帐户,如果用户在某个特定组中,我的后端可以直接询问 IDP?
通过在 Okta 管理仪表板中正确配置 SP 应用程序,可以将组添加到 SAMLResponse。为了对现有应用执行此操作,请转到管理面板并编辑 SAML 设置以包含Group attribute statements. 例如,如果您想向admin您的 SP 公开所有包含该词的组,请添加一个具有正确名称的字段(即组)并指定一个regex带有 value 的过滤器.*admin.*。
正确配置后 SAMLResponse 将包含以下节点:
<saml2p:Response
xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol"
......
......
<saml2p:Status
xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol">
<saml2p:StatusCode
Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</saml2p:Status>
<saml2:Assertion
......
......
xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"
<saml2:AttributeStatement
xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">
<saml2:Attribute
Name="groups"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
<saml2:AttributeValue
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="xs:string">admins_group_1
</saml2:AttributeValue>
<saml2:AttributeValue
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="xs:string">it_admins
</saml2:AttributeValue>
</saml2:Attribute>
</saml2:AttributeStatement>
</saml2:Assertion>
</saml2p:Response>
请注意,组将包含所有包含单词admin的组,无论它是 Okta 组、AD 组等。