Identidade customizada
É possível usar seu próprio provedor de identidade customizado quando você está se autenticando. Seu provedor de identidade pode estar em conformidade com qualquer mecanismo de autenticação alternativo àqueles suportados pelo IBM Cloud® App ID, incluindo proprietário ou anterior.
Visão geral
Ao trazer seu próprio provedor de identidade, é possível criar um fluxo de autenticação customizado que usa seus próprios protocolos. Você tem mais controle, como as informações que você deseja compartilhar ou as informações que estão armazenadas.
Certifique-se de configurar seu provedor customizado antes de incluí-lo em seu aplicativo.
Quando eu desejaria usar esse fluxo?
Quando o App ID não fornece suporte direto para um provedor de identidade específico, é possível usar o fluxo de identidade customizado para fazer ponte com o protocolo de autenticação para o fluxo de autenticação existente do App ID. Por exemplo, você deseja usar GitHub ou LinkedIn para permitir que os seus usuários se conectem. É possível usar o SDK existente do provedor de identidade para facilitar as informações sobre autenticação do usuário antes de empacotar e trocando-o pelo App ID.
Há muitos cenários em que um fluxo de autenticação diferente é necessário:
- Provedores de identidade proprietários internos
- Provedores de identidade de terceiro
- Fluxos de autenticação complicados que podem incluir mecanismos de diversos fatores proprietários
Ocasionalmente, um provedor anterior pode usar seu próprio protocolo de autenticação customizado. Como o fluxo de identidade customizado desacopla completamente a autenticação da autorização, é possível adotar qualquer mecanismo de autenticação de sua escolha e, em seguida, fornecer as informações de autenticação resultantes para o App ID. Tudo sem expor as credenciais do usuário.
Tecnicamente, como esse fluxo funciona?
O fluxo de trabalho de identidade personalizado foi criado com base no tipo de concessão de extensão JWT-Bearer definido na Assertion Framework for OAuth 2.0 Authorization Grants [RFC7521 ]. Para trocar informações do usuário para tokens do App ID, sua arquitetura de autenticação cria um relacionamento de confiança com o App ID usando um par de chaves RSA assimétricas. Depois que a confiança estiver estabelecida, será possível usar o tipo de concessão JWT-Bearer para trocar informações sobre o usuário verificadas em um JWT assinado para os tokens do App ID.
Qual é a aparência desse fluxo?
Como com todos os fluxos de autenticação, a identidade customizada requer que o aplicativo possa estabelecer um grau de confiança com o App ID para assegurar a integridade das informações sobre o usuário do provedor de identidade. A identidade customizada emprega um par de chaves pública e privada RSA assimétricas para estabelecer seu relacionamento confiável. Dependendo de seus requisitos arquiteturais, a identidade customizada suporta dois modelos de confiança que diferem apenas na localização de armazenamento e no uso da chave privada.
{: caption="de solicitação de autenticação personalizadaOs fluxos de solicitação para " caption-side="bottom"} personalizada
|
|---|
| Assim como com os fluxos tradicionais do OAuth 2.0, o modelo de confiança mais seguro cria um relacionamento entre o provedor de identidade e o servidor de autorizações; neste caso, o App ID) diretamente. Sob esse modelo, seu provedor de identidade é responsável por armazenar a chave privada e assinar as asserções JWT. Quando transmitidas para o App ID, essas asserções são validadas com a chave pública correspondente, o que assegura que as informações sobre o usuário de seu provedor de identidade não tenham sido alteradas de forma maliciosa durante o transporte. |
|
|---|
| Como alternativa, é possível basear seu modelo de confiança no relacionamento entre seu aplicativo e o App ID. Nesse fluxo de trabalho, sua chave privada é armazenada em seu aplicativo do lado do servidor. Após uma autenticação bem-sucedida, seu aplicativo é responsável por converter a resposta dos provedores de identidade em um JWT e assiná-la com sua chave privada antes que o aplicativo envie o token para o App ID. Como esse provedor de identidade não tem nenhum relacionamento com o App ID, essa arquitetura cria um modelo de confiança mais fraco. Embora o App ID possa confiar nas informações que são enviadas pelo aplicativo do lado do servidor, não é possível ter certeza de que os dados foram os originais enviados pelo provedor de identidade. |
Gerando um JSON web token
Você pode converter seus dados de usuário verificados em um JWT de identidade personalizado gerando um token da Web JSON. O token deve ser assinado com a chave privada que corresponde à chave pública pré-configurada. Para obter uma lista de bibliotecas de assinatura de token, consulte https://jwt.io/.
Exemplo de formato JWT
{
// Header
"alg": "RS256",
"typ": "JOSE",
// Payload
// Required
"iss": "String", // Should reference your identity provider
"aud": "String", // Must be the OAuth server URL name
"exp": "Int", // Should be a value with a short lifespan
"sub": "String", // Must be the unique user ID provided by your identity provider
// Normalized claims (optional)
"name": "String",
"email": "String",
"locale": "String",
"picture": "String",
"gender": "String",
// Custom Scopes to add to access token (optional)
scope="custom_scope1 custom_scope2"
// Other custom claims (optional)
role="admin"
}
| Campo | Descrição |
|---|---|
iss |
Deve conter uma referência ao seu provedor de identidade. |
aud |
A URL do servidor OAuth. Formato: https://<region>.appid.cloud.ibm.com/oauth/v4/<tenantID>. |
exp |
A duração de tempo em que o token é válido. Por razões de segurança, ele deve ter um curto período de vida e ser específico. |
sub |
O ID do usuário exclusivo que é fornecido pelo provedor de identidade. |
| Solicitações normalizadas | Todas as solicitações normalizadas são fornecidas no token de identidade que é retornado em resposta a essa solicitação. Mais reivindicações personalizadas podem ser encontradas usando o
ponto de extremidade /userinfo. |
| Scope |
Por padrão, todos os tokens do App ID contêm um grupo de escopos pré-configurados. É possível solicitar escopos extras executando uma das seguintes ações:
|
Recuperando os tokens do App ID
Para criar a ponte entre o provedor customizado e o App ID, é necessário ter tokens do App ID. Para obter tokens de serviço, troque suas informações de usuário verificadas usando o ponto de extremidade /token.
Post /token
Content-Type: application/x-www-from-urlencoded
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
assertion=<payload>
scope="<spaceSeparatedScopeArray>"
| Variável | Descrição |
|---|---|
| Tipo de Conteúdo | applications/x-www-from-urlencoded |
| grant_type | urn:ietf:params:oauth:grant-type:jwt-bearer |
| asserção | Uma sequência de carga útil JWS. |
| scope | Uma lista separada por espaços em branco de seus escopos customizados. |