Para utilizar o UAA como Authorization Server, é preciso cadastrar a aplicação como um client no UAA criando um client_id e um client_secret.
Para instalar e executar um UAA localmente, siga as instruções do site GitHub CloudFoundry UAA.
Pelo terminal, utilize o aplicativo de linha de comando para interagir com o UAA e selecione o servidor a ser utilizado.
Para o servidor local, utilize o comando:
$>uaac target http://localhost:8080/uaa
Em seguida, utilize o aplicativo para obter o token para interagir como admnistrador do UAA.
Para o servidor local o usuário admin vem configurado com a senha adminsecret.
$>uaac token client get admin -s adminsecret
Para que uma aplicação possa utilizar o UAA para autenticação, primeiramente, deve-se cadastrar um client no UAA informando:
- client_id: um identificador único que será utilizado para identificar a aplicação.
- secret: uma senha a ser utilizada para validar o acesso.
- redirect_uri: uma URL com um endereço que serã chamado pelo UAA para retornar os tokens a serem utilizados na autenticação.
- scope: os escopos utilizados para autenticação (https://github.com/cloudfoundry/uaa/blob/master/docs/UAA-APIs.rst#scopes-authorized-by-the-uaa).
- authorized_grant_types: uma lista separada por vírgulas dos tipos de permissões requeridas pela aplicação. (https://github.com/cloudfoundry/uaa/blob/master/docs/UAA-Security.md#oauth-client-applications)
- client_credentials
- password
- implicit
- refresh_token
- authorization_code
- authorities: lista de autoridades dadas ao cliente.
- uaa.resource: autoridade necessária para obter a chave (token_key) de autenticação utilizada pelo UAA para assinar o id_token.
Exemplo de comando para cadastrar uma aplicação identificada por myapp2.
$>uaac client add myapp2 \
--secret myapp2clientsecret \
--scope openid \
--redirect_uri http://localhost:3030/callback \
--authorized_grant_types "authorization_code, client_credentials" \
--authorities uaa.resource
De forma análoga, é possível cadastrar usuários no UAA pelo aplicativo de linha de comando. Informando:
- username: o nome de usuário a ser utilizado para autenticação do usuário.
- password: senha do usuário.
- emails: lista de e-mails válidos do usuário.
- given_name: Nome da pessoa.
- family_name: Sobrenome.
- phones: lista de números de telefone.
Exemplo de comando para cadastrar o usuário benkenobi:
$>uaac user add benkenobi \
--password starwars \
--emails [email protected] \
--given_name "Obi-Wan" \
--family_name "Kenobi"
- authorization: Endpoint para iniciar a autenticação. http://localhost:8080/uaa/oauth/authorize
- token: Endpoint para obter o access_token e o id_token. http://localhost:8080/uaa/oauth/token
- token_key: Endpoint para obter a chave token_key utilizada pelo UAA para assinar o id_token. http://localhost:8080/uaa/token_key
- user_info: Endpoint para consultar as informações do usuário autenticado. http://localhost:8080/uaa/oauth/userinfo