SAML Attribute Statements值填写规范

本文介绍SAML标准协议的SAML Attribute Statements扩展值填写规范及配置示例。

类型

填写值

说明

变量

user.username

用户名。

user.displayName

显示名称。

user.phone(已过期)

手机号,不包含国际区号(已过期)。

user.phoneNumber

手机号,不包含国际区号。

user.email

邮箱。

user.status

用户状态,取值:

  • enabled。

  • disabled。

user.primaryOrganizationalUnitId

用户所属主组织ID。

ObjectToJsonString(user.organizationalUnits)

用户所属组织所有信息。

格式:JSON数组字符串。

ArrayJoin(ArrayMap(user.organizationalUnits, __item.organizationalUnitId), ",")

用户所属组织ID列表。

格式:JSON数组字符串。

ObjectToJsonString(user.groups)

账户所属组,组的所有信息。

格式:JSON数组字符串。

ArrayJoin(ArrayMap(user.groups, __item.groupId), ",")

账户所属组ID列表。

格式:JSON数组字符串。

ArrayJoin(ArrayMap(user.groups, __item.groupExternalId), ",")

账户所属组外部ID列表。

格式:JSON数组字符串。

ObjectToJsonString(user.customFields)

所有扩展字段信息。

格式:JSON数组字符串。

user.customFieldMap.$fieldname$.fieldValue

某个扩展字段的值。

appUser.username

应用账户。

常量

使用 "" 英文双引号,引号中填写常量。

表达式

高级功能,可以灵活地将值进行拼接、变化。

具体功能请参考高级:账户字段表达式

SAML表达式相关示例

User对象输入示例:

{
  ...
  "customFieldMap": {
        "place": {
            "fieldName": "place",
            "fieldValue": "beijing"
        },
        "age": {
            "fieldName": "age",
            "fieldValue": "18"
        }
    },
    "identityProviderUserMap": {
        "idp_m2gngriuenktdkxxxxxx": {
            "identityProviderId": "idp_m2gngriuenktdkxxxxxx",
            "identityProviderType": "ding_talk",
            "identityProviderExternalId": "corp_1234xxxxxxx",
            "identityProviderUserId": "b2ed5fc0xxxxx"
        }
    },
    "organizationalUnits": [
        {
            "organizationalUnitId": "ou_sdfadtaaxxxxxx",
            "organizationalUnitName": "AD",
            "primary": false
        },
        {
            "organizationalUnitId": "ou_werttxxxxxx",
            "organizationalUnitName": "name_002",
            "primary": true
        }
    ],
    "primaryOrganizationalUnitId": "ou_werttxxxxxx",
    "customFields": [
        {
            "fieldName": "place",
            "fieldValue": "beijing"
        },
        {
            "fieldName": "age",
            "fieldValue": "18"
        }
    ],
    "groups": [
        {
            "groupId": "group_jp6al4sn4n4wjgjxxxxxx",
            "groupName": "group1",
            "groupExternalId": "group_jp6al4sn4n4wjgjxxxxxx"
        },
        {
            "groupId": "group_vavikcxewkf5h3oxxxxxx",
            "groupName": "group2",
            "groupExternalId": "group_vavikcxewkf5h3oxxxxxx"
        }
    ],
  ...
}

SMAL界面配置示例:

image

  1. 通过表达式ObjectToJsonString(user.organizationalUnits)最后生成的SAML Response如下:

    <saml2:Attribute Name="organizationalUnits" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
      <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">
        [{"organizationalUnitId":"ou_sdfadtaaxxxxxx","organizationalUnitName":"AD","primary":false},{"organizationalUnitId":"ou_werttxxxxxx","organizationalUnitName":"name_002","primary":true}]
      </saml2:AttributeValue>
    </saml2:Attribute>
  2. 通过表达式ArrayJoin(ArrayMap(user.organizationalUnits, __item.organizationalUnitId), ",")最后生成的SAML Response如下:

    <saml2:Attribute Name="organizationalUnitIds" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
      <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">
        ou_sdfadtaaxxxxxx,ou_werttxxxxxx
      </saml2:AttributeValue>
    </saml2:Attribute>
  3. 通过表达式ObjectToJsonString(user.groups)最后生成的SAML Response如下:

    <saml2:Attribute Name="groups" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
      <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">
        [{"groupId":"group_jp6al4sn4n4wjgjxxxxxx","groupName":"group1","groupExternalId":"group_jp6al4sn4n4wjgjxxxxxx"},{"groupId":"group_vavikcxewkf5h3oxxxxxx","groupName":"group2","groupExternalId":"group_vavikcxewkf5h3oxxxxxx"}]
      </saml2:AttributeValue>
    </saml2:Attribute>
  4. 通过表达式ArrayJoin(ArrayMap(user.groups, __item.groupId), ",")最后生成的SAML Response如下:

    <saml2:Attribute Name="groupIds" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
      <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">
        group_jp6al4sn4n4wjgjxxxxxx,group_vavikcxewkf5h3oxxxxxx
      </saml2:AttributeValue>
    </saml2:Attribute>
  5. 通过表达式ArrayJoin(ArrayMap(user.groups, __item.groupExternalId), ",")最后生成的SAML Response如下:

    <saml2:Attribute Name="groupExternalIds" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
      <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">
        group_jp6al4sn4n4wjgjxxxxxx,group_vavikcxewkf5h3oxxxxxx
      </saml2:AttributeValue>
    </saml2:Attribute>
  6. 通过表达式SamlArray(ArrayMap(user.groups, __item.groupId))最后生成的SAML Response如下:

    <saml2:Attribute Name="grouIdArray" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
      <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:type="xsd:string">
        group_jp6al4sn4n4wjgjxxxxxx
      </saml2:AttributeValue>
      <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">
        group_vavikcxewkf5h3oxxxxxx
      </saml2:AttributeValue>
    </saml2:Attribute>
  7. 通过表达式ObjectToJsonString(user.customFields)最后生成的SAML Response如下:

    <saml2:Attribute Name="customFields" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
      <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:type="xsd:string">
        [{"fieldName":"place","fieldValue":"beijing"},{"fieldName":"age","fieldValue":"18"}]
      </saml2:AttributeValue>
    </saml2:Attribute>
  8. 通过表达式user.customFieldMap.age.fieldValue最后生成的SAML Response如下:

    <saml2:Attribute Name="age" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
      <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">
        18
      </saml2:AttributeValue>
    </saml2:Attribute>