我应该使用哪些声明将 ADFS 用户映射到 GCIP
Which Claims should I use to map an ADFS user to GCIP
我们在 firebase 平台上有一个 SaaS 产品,我们的一位客户要求我们为他们的用户提供 SSO 体验。他们有一个旧的 ADFS 作为 IdP。
虽然我首先使用 Passport-Saml,但后来注意到 firebase auth 可以使用 Google Cloud Identity Platform 来自定义 SAML IdP。
它运行良好,我们让用户在第一次尝试时登录。但是,在 firebase 中创建的用户非常空。
这是来自 auth 创建挂钩的用户:
{
customClaims: {
}
disabled: false
displayName: null
email: null
emailVerified: false
metadata: {
creationTime: "2020-09-21T22:43:36Z"
lastSignInTime: "2020-09-21T22:43:36Z"
}
passwordHash: null
passwordSalt: null
phoneNumber: null
photoURL: null
providerData: [
0: {
providerId: "saml.xxxx"
uid: "xxxx"
}
]
tokensValidAfterTime: null
uid: "xxxx"
}
在 ADFS 方面,我们的客户已将声明配置为将 LDAP 映射为
电子邮件地址 -> 电子邮件地址
SAM-帐户名称 -> 名称 ID
如果有人知道哪个 SAML 声明映射到 firebase 用户属性,我将不胜感激,文档中没有运气。
编辑
我使用 saml tools
创建了 ServiceProvider.xml
<?xml version="1.0"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
validUntil="2020-09-25T02:53:54Z"
cacheDuration="PT604800S"
entityID="xxxx">
<md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://xxx.firebaseapp.com/__/auth/handler"
index="1" />
</md:SPSSODescriptor>
</md:EntityDescriptor>
并使用 saml test 进行了更多测试,这是一个很棒的沙盒
答案是双重的:
ServiceProvider.xml文件需要指定nameid格式为邮箱地址
<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>
来自 ADFS 的声明映射需要
E-mail-Addresses -> 名称 ID
我们在 firebase 平台上有一个 SaaS 产品,我们的一位客户要求我们为他们的用户提供 SSO 体验。他们有一个旧的 ADFS 作为 IdP。
虽然我首先使用 Passport-Saml,但后来注意到 firebase auth 可以使用 Google Cloud Identity Platform 来自定义 SAML IdP。
它运行良好,我们让用户在第一次尝试时登录。但是,在 firebase 中创建的用户非常空。
这是来自 auth 创建挂钩的用户:
{
customClaims: {
}
disabled: false
displayName: null
email: null
emailVerified: false
metadata: {
creationTime: "2020-09-21T22:43:36Z"
lastSignInTime: "2020-09-21T22:43:36Z"
}
passwordHash: null
passwordSalt: null
phoneNumber: null
photoURL: null
providerData: [
0: {
providerId: "saml.xxxx"
uid: "xxxx"
}
]
tokensValidAfterTime: null
uid: "xxxx"
}
在 ADFS 方面,我们的客户已将声明配置为将 LDAP 映射为 电子邮件地址 -> 电子邮件地址 SAM-帐户名称 -> 名称 ID
如果有人知道哪个 SAML 声明映射到 firebase 用户属性,我将不胜感激,文档中没有运气。
编辑 我使用 saml tools
创建了 ServiceProvider.xml<?xml version="1.0"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
validUntil="2020-09-25T02:53:54Z"
cacheDuration="PT604800S"
entityID="xxxx">
<md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://xxx.firebaseapp.com/__/auth/handler"
index="1" />
</md:SPSSODescriptor>
</md:EntityDescriptor>
并使用 saml test 进行了更多测试,这是一个很棒的沙盒
答案是双重的:
ServiceProvider.xml文件需要指定nameid格式为邮箱地址
<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>
来自 ADFS 的声明映射需要
E-mail-Addresses -> 名称 ID