Este tópico descreve as especificações para configurar valores em instruções de atributo SAML e apresenta exemplos de configuração.
Valores de instrução de atributo
|
Tipo |
Valor |
Descrição |
|
variável |
|
Nome de usuário. |
|
|
Nome de exibição. |
|
|
|
Número de celular, sem o código do país (obsoleto). |
|
|
|
Número de celular, sem o código do país. |
|
|
|
Endereço de e-mail. |
|
|
|
Status do usuário. Valores válidos:
|
|
|
|
ID da unidade organizacional principal do usuário. |
|
|
|
Unidades organizacionais às quais o usuário pertence. Formato: string de array JSON. |
|
|
|
IDs das unidades organizacionais às quais o usuário pertence. Formato: string separada por vírgulas. |
|
|
|
Grupos aos quais a conta pertence. Formato: string de array JSON. |
|
|
|
IDs dos grupos aos quais a conta pertence. Formato: string separada por vírgulas. |
|
|
|
IDs externos dos grupos aos quais a conta pertence. Formato: string separada por vírgulas. |
|
|
|
Todos os campos personalizados. Formato: string de array JSON. |
|
|
|
Valor de um campo personalizado. Substitua |
|
|
|
Conta do aplicativo. |
|
|
constante |
String fixa. Coloque o valor entre aspas duplas (""). |
|
|
expressão |
Recurso avançado que permite concatenar e transformar valores com flexibilidade. Para obter mais informações, consulte expressões avançadas de campo de conta. |
|
Exemplos de expressões SAML
Exemplo de objeto de usuário
{
...
"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"
}
],
...
}
Exemplo de configuração no console SAML
Na página de configuração do aplicativo SAML, em Signing Algorithm, selecione SHA256 (somente RSA-SHA256 é compatível). Na seção Attribute Statements, configure os seguintes mapeamentos de atributos: organizationalUnits → ObjectToJsonString(user.organizationalUnits), organizationalUnitIds → ArrayJoin(ArrayMap(user.organizationalUnits, __item.organizationalUnitId), ","), groups → ObjectToJsonString(user.groups), groupIds → ArrayJoin(ArrayMap(user.groups, __item.groupId), ","), groupExternalIds → ArrayJoin(ArrayMap(user.groups, __item.groupExternalId), ","), groupIdArray → SamlArray(ArrayMap(user.groups, __item.groupId)), customFields → ObjectToJsonString(user.customFields) e age → user.customFieldMap.age.fieldValue. Essa configuração inclui campos adicionais de usuário na resposta SAML para análise pelo aplicativo. Em SSO initiator, selecione Support portal and application initiated. Assim, os usuários podem iniciar o SSO tanto pela página do portal Alibaba Cloud IDaaS quanto pelo aplicativo.
Exemplos de asserções SAML resultantes
-
A expressão
ObjectToJsonString(user.organizationalUnits)gera a seguinte asserção SAML:<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> -
A expressão
ArrayJoin(ArrayMap(user.organizationalUnits, __item.organizationalUnitId), ",")gera a seguinte asserção SAML:<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> -
A expressão
ObjectToJsonString(user.groups)gera a seguinte asserção SAML:<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> -
A expressão
ArrayJoin(ArrayMap(user.groups, __item.groupId), ",")gera a seguinte asserção SAML:<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> -
A expressão
ArrayJoin(ArrayMap(user.groups, __item.groupExternalId), ",")gera a seguinte asserção SAML:<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> -
A expressão
SamlArray(ArrayMap(user.groups, __item.groupId))gera a seguinte asserção SAML:<saml2:Attribute Name="groupIdArray" 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> -
A expressão
ObjectToJsonString(user.customFields)gera a seguinte asserção SAML:<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> -
A expressão
user.customFieldMap.age.fieldValuegera a seguinte asserção SAML:<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>