Mapeamento de solicitação do OpenID Connect para contexto de autorização
Com base na configuração, os fluxos OAuth ou Open ID Connect no IBM® Verify podem executar ações de autorização.
Os fluxos podem incluir essas ações.
- Avalie a política de acesso.
- Calcule valores de solicitação que são armazenados na concessão de autorização e usados para construir tokens de ID e a resposta de introspecção.
A regra de mapeamento de solicitação de contexto fornece um mecanismo para aumentar o contexto que é coletado da solicitação de autorização. Por exemplo, a solicitação de autorização pode conter um parâmetro de solicitação customizado chamado contextID. A regra customizada pode incluir o contextID em uma solicitação HTTP para um terminal externo. O resultado dessa solicitação HTTP é um objeto que pode ser descompactado e incluído no requestContext que é usado durante a avaliação da política de acesso e o enriquecimento de concessão. Consulte r_attr_functions.html
A regra pode ser gravada usando uma linguagem simples de expressão de linha única ou como um documento baseado em YAML multilinhas mais avançado. Consulte o executor de regras de várias linhas.
Objetos de entrada disponíveis
- Contexto de solicitação de HTTP
- Quando um usuário efetua o login no Verify, o contexto de solicitação HTTP recebido pode ser acessado na regra de mapeamento de solicitação. Todos os parâmetros de solicitação de OAuth, como
claimsescope, estão disponíveis nesterequestContext. A estrutura geral e o uso dorequestContextsão descritos na seção “ HTTP RequestContext” do documento r_attr_functions.html.Para o acesso, determinados valores são pré-calculados norequestContext. O parâmetro de solicitaçãoclaimsé geralmente representado como um arquivo JSON como o exemplo a seguir.{ "id_token": { "claim_name": { "essential": false, "value": "some_value" } }, "userinfo": { "claim_name": { "essential": false, "value": "some_value" } } }Este formato pode ser incômodo para acessar. A chave que é usada no
requestContextestá no formatoclaims_claimType_claimName. OclaimTypeéuserinfoouidtoken(observe o sublinhado ausente). Assim, ao usar o exemplo anterior, o valorclaim_namepode ser obtido usandorequestContext.getValue('claims_idtoken_claim_name').Da mesma forma,
scopeé dividido pelo separador de espaço para construir uma matriz de sequência. - Credencial de origem de identidade
- Quando um usuário efetua login no Verify, os atributos de credencial de origem de identidade são incluídos na sessão de login e podem ser acessados na regra de mapeamento de solicitação.O objeto de domínio
idsuserestá disponível como um mapa com uma chave de sequência e um valor de matriz de sequência. Por exemplo,
Consulte r_attr_functions.html.{ "realmName": ["cloudIdentityRealm"], "displayName": ["Jessica J. Hill"], "phone": ["+12324321234"] } - Outras funções e operadores
- Operadores e funções padrão estão disponíveis na regra de mapeamento. O cliente HTTP também está disponível para fazer solicitações de saída. Outras funções suportadas incluem hashing e registros de data e hora. Consulte as seções relevantes em r_attr_functions.html.
Objeto de retorno
Espera-se que esta regra customizada retorne um objeto JSON e que o valor de cada propriedade JSON seja uma matriz de sequência.
{
"ageRange": ["toddler"],
"interests": ["sleeping", "other_misc_activities"]
}Esse valor de retorno é processado e pode, posteriormente, ser acessado em atributos de regra avançada usando requestContext.ageRange e requestContext.interests. Os atributos de regras avançadas podem ser usados em políticas de acesso como {{requestContext.ageRange[0]
!= 'toddler'}} ou para mapear atributos na concessão de autorização requestContext.interests.Exemplo - Incluir hobbies no token de ID
hobbies no token de ID.
statements:
- context: "contextData := hc.getAsJSON('https://jke.com/users/' + idsuser.getValue('uid'), { 'Authorization': 'apikey supersecretkey' })"
- return: >-
{
"hobbies": request.Context.interests.filter(x, x != 'other')
}Neste exemplo, a regra está chamando um terminal de usuários externos para obter informações adicionais sobre o usuário. Ele usa o objeto idsuser, que representa a sessão autenticada do usuário no Verify. Por fim, a regra extrai hobbies da resposta.hobbies pode ser acessado pelos métodos a seguir.- Criação de um atributo de regra avançada que é denominado
my_hobbiescom uma regra customizada definida comorequestContext.hobbies. O tipo de dados para esse atributo é sequência com diversos valores. - Incluindo um mapeamento de atributo para este atributo. Consulte OpenID para obter informações sobre o mapeamento entre introspect, token de identificação e dados do usuário.