本文介绍SAML标准协议的SAML Attribute Statements扩展值填写规范及配置示例。
类型 | 填写值 | 说明 |
变量 | user.username | 用户名。 |
user.displayName | 显示名称。 | |
user.phone(已过期) | 手机号,不包含国际区号(已过期)。 | |
user.phoneNumber | 手机号,不包含国际区号。 | |
user.email | 邮箱。 | |
user.status | 用户状态,取值:
| |
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界面配置示例:
通过表达式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>
通过表达式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>
通过表达式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>
通过表达式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>
通过表达式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>
通过表达式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>
通过表达式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>
通过表达式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>