TLS Client Auth

Pré-requisitos:

Token

URL de Documentação da API : /apidocs/#/OAuth2/post__application__oauth_token

Após o login do usuario com sucesso, voce deve pegar o valor do argumento code e dados do client cadastrado e consumir o endpoint https://[ip ou hostname (fqdn)]/<application name>/oauth/token

Parâmetros:

  • application:
    • Obrigatório: Sim
    • Tipo: String
    • Localização: Caminho da URL (Path)
    • Descrição: Nome da aplicação a ser usada.
  • client_id:
    • Obrigatório: Sim
    • Tipo: String
    • Localização: No corpo da requisição JSON
    • Descrição: ID do cliente a ser usado na geração do "code"
  • code:
    • Obrigatório: Sim
    • Tipo: String
    • Localização: No corpo da requisição JSON.
    • Descrição: Codigo retornado no endpoint authorize
  • grant_type:
    • Obrigatório: Sim
    • Tipo: String
    • Localização: No corpo da requisição JSON.
    • Descrição: Grant type configurado no client
  • redirect_uri:
    • Obrigatório: Sim
    • Tipo: String
    • Localização: No corpo da requisição JSON.
    • Descrição: Redirect uri enviado como parâmetro do endpoint authorize
  • key:
    • Obrigatório: Sim
    • Tipo: String
    • Localização: Header da requisição.
    • Descrição: Chave vinculada ao certificado do client assinado por um CA
  • cert:
    • Obrigatório: Sim
    • Tipo: String
    • Localização: Header da requisição.
    • Descrição: Certificado do client assinado por um CA

No exemplo abaixo iremos utilizar o fluxo com o grant_type sendo authorization_code e o response_type como code

Como o Token Endpoint Auth Method foi definido no exemplo como tls_client_auth a autenticação é realizada passando o par chave/certificado no header da requisição

  • Observação: espera-se que todos os pré-requisitos tenham sido satisfeitos, e que o certificado do client esteja assinado pelo root CA e intermediate CA

  • SAN Field

    • Não se esqueça de configurar no client um SAN field (Subject Alternative Name) para validar o certificado. No exemplo, iremos usar o email que foi registrado na criação do certificado.
    • Para extrair SAN fields do certificado basta rodar o seguinte comando:
      openssl x509 -noout -text -in client.cert.pem
      
      SAN email field


  • Exemplo de uma requisição usando tls_client_auth para autenticação

    curl -X POST "https://[ip ou hostname (fqdn)]/<application name>/oauth/token" \
    -H "accept: application/json" \
    -H "Content-Type": application/x-www-form-urlencoded \
    --cert $CERT \
    --key $KEY \
    -d grant_type=authorization_code \
    -d client_id=<client_id> \
    -d code=<auth_code> \
    -d redirect_uri=<redirect_uri>
    

    O retorno desta chamada deve ser similar ao exemplo abaixo:

    {
    "access_token": "eyJhbGciOiJSUz[...]EoULcOD4XZtfsTq1j95bg",
    "expires_in": 3600,
    "scope": "profile",
    "token_type": "Bearer"
    }
    


UserInfo

URL de Documentação da API : /apidocs/#/OAuth2/get__application__oauth_userinfo

Para recuperar as informações do usuário, utilize o access_token retornado pelo endpoint acima como valor do header Authorization: Bearer <access_token>

Parâmetros:

  • application name:
    • Obrigatório: Sim
    • Tipo: String
    • Localização: Caminho da URL (Path)
    • Descrição: O nome da aplicação a ser usada.

Exemplos:

  • Curl:

      curl -X GET "https://[ip ou hostname (fqdn)]/<application name>/oauth/userinfo" \
      -H "accept: application/json" \
      -H "Authorization: Bearer <access_token>"
    

    O retorno desta chamada deve ser similar ao exemplo abaixo:

    {
    "id": "09d97a66-da69-4049-9123-3fdd7c2c2738",
    "name": "userdocs",
    "sub": "09d97a66-da69-4049-9123-3fdd7c2c2738",
    "username": "userdocs"
    }
    

results matching ""

    No results matching ""