O OIDC é um protocolo de autenticação implementada sobre o protocolo OAuth 2.0. Enquanto que o protocolo OAuth 2.0 é destinado ao controlo de acesso e partilha de recursos o protocolo OIDC é destinado a autenticação de utilizadores.
Este protocolo garante a implementação do Single Sign-on (SSO) de forma segura. O SSO permite aos utilizadores autenticarem uma única vez e ter acesso a múltiplas aplicações.
Os passos a seguir ilustram como funciona a autenticação dum utilizador numa aplicação via Autentika:
O fluxo de autenticação descrita acima corresponde a concessão de autorização utilizando um código (Authorization Code). Para mais detalhes sobre este e outros tipos de conessão de autorização clique aqui.
Os tokens de acesso são credenciais utilizadas pelas aplicações para consumir uma determinada API. O Autentika gera e faz a gestão do ciclo de vida dos tokens.
O ID token é uma JSON Web Token (JWT) que contem os dados de perfil de um utilizador (e outros metadados), sendo composto pelo cabeçalho, corpo e assinatura. É consumida pela aplicação para obter os dados de perfil do utilizador (como por exemplo o nome e o email).
Exemplo duma ID token:
{
"sub" : "pedro.ramos@nosi.cv",
"iss" : "https://autentika.gov.cv/oauth2/oidcdiscovery",
"aud" : "74zdFEfgdZ6L1Ze82ZID8",
"auth_time" : 1563964449,
"iat" : 1563968049,
"exp" : 1563964449
}
Uma claim é uma informação que caracteriza uma entidade (como por exemplo o nome ou o email). Uma JWT contém um conjunto de claims.
Este é o endpoint do Autentika onde o utilizador é solicitado para autenticar e autorizar a partilha dos dados de seu perfil (como por exemplo nome e email) com uma determinada aplicação.
Quando um utilizador aceder uma aplicação que requer autenticação, ele é redirecionado para este endpoint. Esse é o único endpoint em que o utilizador interage com o Autentika (normalmente via um browser web).
O Token Endpoint é utilizado pelas aplicações para obter tokens, incluindo o ID Token e o Access Token. Para autenticar-se nesse endpoint, a aplicação deve apresentar o seu ID e a sua chave secreta na requisição.
A chamada a este endpoint deve ser realizada com o método POST e a comunicação deve utilizar o protocolo TLS.
As aplicações utilizam o UserInfo Endpoint do Autentika para obter claims (atributos) do utilizador autenticado. Apenas são retornados os atributos autorizados pelo utilizador.
Para identificar-se, a aplicação deve apresentar um token de acesso válido. A chamada a este endpoint pode ser feita utilizando tanto o método GET como o método POST, mas a comunicação deve utilizar o protocolo TLS.
Na resposta do Autentika os claims são apresentados num objeto JSON em forma de pares chave (nome do atributo) e valor (valor do atributo).
A listagem a seguir descreve endpoints adicionais.
Token Revocation Endpoint | Permite às aplicações revogar um token de acesso ou uma refresh token |
---|---|
Token Introspection Endpoint | Endpoint para validar um token. A resposta ao chamar esse endpoint inclui a validade do token e quantos segundos restam para o token tornar inválido (para o fim do seu tempo de vida) |
Session IFrame Endpoint | Permite ás aplicações monitorar o estado da autenticação do utilizador no Autentika (verificar se o utilizador continua logado ou fez o logout). |
Logout Endpoint | É utilizado pela aplicação para redirecionar o utilizador para a página de logout do Autentika. Na página de logout o Autentika disponibiliza a opção de logout ao utilizador |