我应该使用哪些声明将 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