8

我正在尝试通过在我的网站中作为服务提供商 (SP) 和 Okta env 实施 SAML 2.0 来与 Okta SSO 集成。作为我的身份提供者 (IDP),我无法理解如何配置我的 IDP 以针对每个 Auth 请求返回用户所在的组。如何完成?

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

4

1 回答 1

17

通过在 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 组等。

于 2016-05-04T04:45:38.997 回答