Escopo
De acordo com IETF RFC 6749, o valor do parâmetro de escopo é expresso como uma lista de sequências delimitada por espaço com distinção entre maiúsculas e minúsculas.
- Um Provedor do OAuth deve ter pelo menos um escopo
- Um token OAuth não será concedido a menos que um escopo padrão seja configurado no provedor ou um ou mais escopos predefinidos sejam incluídos na solicitação de concessão.
- Se nenhum escopo padrão for definido e a solicitação não contiver um escopo, um erro de escopo inválido será retornado para a solicitação..
Provedor OAuth
Para oferecer um suporte mais refinado ao tratamento do escopo do OAuth, permite que a extensão de registro de usuário Authentication URL modifique o valor do escopo.
Ao definir um provedor OAuth, as extensões de Verificação de escopo avançada fornecem a flexibilidade para verificar e substituir escopos permitidos. As extensões opcionais são Verificação de escopo do aplicativo e Verificação de escopo do proprietário.
O escopo que é eventualmente recebido pelo aplicativo é determinado pelas interações que são descritas nos três parágrafos a seguir. O processamento de escopo segue a sequência dos itens 1, 2, e 3 na lista a seguir, oferecendo três oportunidades para substituir o valor do escopo.. A Figura 1 fornece uma visão geral do processo.
- Após o aplicativo ser autenticado com êxito e se for configurado, API Connect fará uma chamada para permitir verificação extra e usará o conteúdo de
x-selected-scopepara substituir o valor do escopo que foi solicitado inicialmente pelo aplicativo. Quando a Verificação de Escopo do Aplicativo for ativada, o cabeçalho de resposta HTTPx-selected-scopedeverá estar presente, ou a chamada falhará. - Se estiver configurado para autenticar usuários de aplicativos usando uma autenticação URL, então API Connect faz uma chamada, conforme documentado em Autenticação URL registro de usuário. Quando o código de resposta éHTTP
200, e o cabeçalho de resposta
x-selected-scopeestiver presente, o valor configurado emx-selected-scopeserá usado como o novo valor do escopo, substituindo o que o aplicativo já solicitou e o que foi fornecido na verificação do escopo do Aplicativo descrito no parágrafo 1. No cabeçalho de resposta,x-selected-scopeé um elemento opcional.. - Após a autenticação bem-sucedida do usuário, e se o estiver ativado e configurado com um URL válido, o API Connect fará uma chamada para permitir que o conteúdo do
x-selected-scoperefine o valor do escopo. Quando Verificação de Escopo do Proprietário for ativada, o cabeçalho de resposta HTTPx-selected-scopedeverá estar presente, ou a chamada falhará.Figura 1. Visão geral de escopo avançado OAuth 
A permissão de escopo final concedida pelo token de acesso é o resultado do fluxo descrito nos itens 1, 2 e 3. A Figura 2 mostra uma visualização mais detalhada do fluxo de transação com exemplos que mostram quando o x-selected-scope fornece um novo valor do escopo

Cumprimento de API do consumidor
GET com um token de acesso que contenha o escopo ou escopos definidos no provedor OAuth. Se a solicitação não contiver um escopo, você deverá especificar um escopo padrão para usar. Se nenhum escopo padrão for definido e a solicitação não contiver um escopo, um erro de escopo inválido será retornado para a solicitação..GET /getaccount
HTTP/1.1
Host: server.example.com
X-IBM-Client-Id: 8888-8888-8888
Authorization: Bearer AAEkNjVkOWIyYjgtOWY5ZS00YWQwLWIyYzktZsecure-banking.yaml
securityDefinitions:
scope-only:
type: oauth2
description: ''
flow: implicit
authorizationUrl: ''
scopes:
checking: 'Checking Account'
saving: 'Saving Account'
mutual: 'Mutual Fund Account'
security:
- scope-only:
- checking
- scope-only:
- saving
- mutual
AAEkNjVkOWIyYjgtOWY5ZS00YWQwLWIyYzktZ pode acessar a API porque ele contém uma ou uma combinação de scope-only que é definida em secure-banking.yaml , como:checkingsaving mutualchecking saving mutual
Os administradores podem ativar uma verificação de escopo adicional configurando a propriedade da API do consumidor Advanced Scope Check URL que se torna x-scopeValidate , conforme mostrado no seguinte OpenAPI exemplo de arquivo.
securityDefinitions:
advanced-scope-only:
type: oauth2
description: ''
flow: implicit
authorizationUrl: ''
scopes:
checking: 'Checking Account'
saving: 'Saving Account'
mutual: 'Mutual Fund Account'
x-scopeValidate:
url: 'https://advanced-scope-check.bk.com/validate-scope'
tls-profile: 'ssl-client'
Após verificar com êxito o token de acesso com relação a qualquer requisito de escopo, fará uma solicitação HTTP POST para o terminal x-scopeValidate semelhante ao exemplo a seguir. Código de RespostaHTTP 200do terminal indica um sucesso. Qualquer outro código de resposta ou um erro de conexão é tratado como um erro de permissão para o token.
POST /validate-scope?app-name=..&appid=..&org=..&orgid=..&catalog=..&catalogid=..&transid=..
HTTP/1.1
Host: advanced-scope-check.bk.com
Content-Type: application/json
{"context-root" : checking,
"resource" : accountinfo,
"method" : GET,
"api-scope-required" : [jointaccount],
"access_token" : {"client_id" : "2cd71759-1003-4a1e-becb-0474d73455f3",
"not_after" : 174364070,
"not_after_text" : "2017-07-11T02:27:50Z",
"not_before" : 174360470,
"not_before_text" : "2017-07-11T01:27:50Z",
"grant_type" : "code",
"consented_on" : 1499736470,
"consented_on_text" : "2059-07-11T01:27:50Z",
"resource_owner" : "cn=spoon,email=spoon@poon.com",
"scope" : "jointaccount mutual",
"miscinfo" : "[r:gateway]"
}
}
HTTP/1.1 200 OK
Cache-Control: no-store
Pragma: no-cache
X-Custom-For-Assemble-Process: auditQualquer cabeçalho de resposta HTTP que começa com "x-" é mantido como a variável de contexto oauth.advanced-consent. Com base na resposta bem-sucedida de exemplo, X-Custom-For-Assemble-Process: audit se tornaoauth.advanced-consent.x-custom-for-assemble-processe pode ser acessado na etapa de montagem.
Opcionalmente, é possível usar campos adicionais para validação:
- Cabeçalho de solicitação
- Define a expressão regular para corresponder aos cabeçalhos de solicitação . Os cabeçalhos correspondentes são incluídos na solicitação para o terminal de validação de escopo avançado
- Variável de contexto de resposta
Define a expressão regular para corresponder aos cabeçalhos de resposta . Cabeçalhos correspondentes são salvos como variáveis de contexto no formato
oauth.advanced-consent.*.