如何从 SAML 响应中识别用户?

How to identify a user from SAML Response?

我已经实现了单点登录来访问我的 Sp 应用程序。它使用一个 shibboleth 服务器作为身份提供者。在我登录 idp 系统后,我收到了来自 Idp 的 Saml 响应 其中包含 Saml 断言,但我现在不知道如何在我的应用程序中识别此用户。 saml 断言包含以下数据:

*

The following attributes were provided by your identity provider urn:oasis:names:tc:SAML:2.0:nameid-format:transient AAdzZWNyZXQxlKzPy2zEKyk/rEaN2jVTXi6mEvaFbOzXwkMNEZMB+TkQcmWW4LZT70hx3cAVEyrBSdXkT2glVkPGuncVMe5PfFipJjVAGE7jdRGsFef6CqzDArE9Olw/1EhkIA/S3hu9IpiU urn:oid:1.3.6.1.4.1.5923.1.1.1.9 affiliate@test.ukfederation.org.uk, affiliate, i8mqNNzYfweNDzGr/PafYaMzWko=, alice@test.ukfederation.org.uk urn:oid:1.3.6.1.4.1.5923.1.1.1.1 affiliate@test.ukfederation.org.uk, affiliate, i8mqNNzYfweNDzGr/PafYaMzWko=, alice@test.ukfederation.org.uk urn:oid:1.3.6.1.4.1.5923.1.1.1.10 affiliate@test.ukfederation.org.uk, affiliate, i8mqNNzYfweNDzGr/PafYaMzWko=, alice@test.ukfederation.org.uk urn:oid:1.3.6.1.4.1.5923.1.1.1.6 affiliate@test.ukfederation.org.uk, affiliate, i8mqNNzYfweNDzGr/PafYaMzWko=, alice@test.ukfederation.org.uk

*

我试图使用 name-id 来识别我系统中的用户和 idp 中的用户,但是这个值在每次登录后都会改变。

例如:Google Suite 使用 urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress 作为名称标识符 并且可以使用电子邮件地址找到用户,但在这种情况下我被卡住了。 请问这是最好的方法吗?我应该使用属性吗?

这使用对象标识符 (OID) 格式。

例如1.3.6.1.4.1.5923.1.1.1.6 是 eduPersonPrincipalName

参考this.