获取用户在 Okta 中关联的组列表

Getting list of groups user is associated with in Okta

我正在尝试通过在我的网站中将 SAML 2.0 实施为服务提供商 (SP) 和 Okta env 来与 Okta SSO 集成。作为我的身份提供者 (IDP) 我不明白如何将我的 IDP 配置为 return 每个 Auth 请求,用户所在的组。如何完成?

此外,是否可以在我的 IDP 中拥有服务帐户,如果用户在某个特定组中,我的后端可以直接询问 IDP?

通过在 Okta 管理仪表板中正确配置 SP 应用程序,可以将组添加到 SAMLResponse。 要为现有应用执行此操作,请转到管理面板并编辑 SAML 设置以包含 Group attribute statements。 例如,如果您想要向您的 SP 公开包含单词 admin 的所有组,请添加一个具有适当名称(即组)的字段并指定一个值为 .*admin.*regex 过滤器。

配置正确后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 组等。