/ / Quais são as principais tecnologias de identidade federada? - oauth, openid, saml, identidade baseada em declarações, identidade federada

Quais são as principais tecnologias de identidade federada? - oauth, openid, saml, identidade baseada em declarações, identidade federada

Eu preciso descobrir como vamos fazerAutorização e autenticação para nossa aplicação. Quais são as três principais tecnologias para implementar a Autorização e Autenticação? Gostaríamos que nosso aplicativo não confiasse em sessões, seria mais desejável usar tokens. Preciso criar um provedor de identidade e nunca fiz nada assim. Por favor, ajude!

Respostas:

4 para resposta № 1

Como o OhadR diz, você conseguiu marcar sua postagemcom os três principais padrões - OAuth, OpenID e SAML. No entanto, eu não concordo com a declaração dele sobre o nível de complexidade do SAML. Além disso, suas declarações: "Gostaríamos que nosso aplicativo não dependesse de sessões, seria mais desejável usar tokens. Eu preciso criar um provedor de identidade ... "estão um pouco em desacordo. Você fala sobre" seu aplicativo "de uma só vez, mas depois diz que precisa" criar um provedor de identidade "em outro ... Então, eu "falarei apenas em termos gerais. Para ser aberto, trabalho na Ping Identity - vendemos um produto chamado PingFederate que faz tudo isso.

Com o OpenID e OAuth, há muitossimilaridade (especialmente porque o OpenID Connect é essencialmente o OAuth2 com uma extensão ou duas). Diferentes empresas estão usando isso de maneiras diferentes (considere Google, Facebook e Twitter, por exemplo). Todos eles estão tentando ser seu provedor de identidade de escolha, é claro, mas desses três, o Google também permitirá que você o use como provedor de serviços. Ambas as tecnologias são "baseadas em token", o que significa que seu aplicativo gera e confirma tokens para autenticação (e talvez autorização) quando você é o provedor de identidade ou verifica a validade desse token com o provedor de identidade dentro de um período determinado de momento em que você é o provedor de serviços.

Com o SAML, você está falando de sessões (que vocêindica que você NÃO deseja). O usuário aparece no seu aplicativo e o envia para se autenticar naquela sessão e retornar com uma sessão autenticada e possivelmente com alguns atributos para ajudar seu aplicativo a obter autorização.

Na medida em que usar ... É aqui que fica mais difícil. O SAML está definitivamente lá fora. Quase qualquer provedor de serviços real permitirá que você use SAML. Muitas empresas implementaram provedores de identidade. Se você estiver criando um aplicativo para uso das empresas, estará seguro em fazer com que seu aplicativo consuma SAML. O OpenID e o OAuth são mais novos, com certeza, portanto, menos empresas os disponibilizaram do ponto de vista do IdP - há muito a ser configurado (armazenamento de tokens e escopos). Eu arriscaria adivinhar e dizer que apenas um dentre cinco (ou talvez menos) empresas que fazem SAML como um IdP também fazem OAuth ou OpenID. O mesmo vale para empresas que atuam como prestadoras de serviços.

Por fim, você precisa tomar sua decisão com baseno seu caso de uso. Você está atuando como provedor de serviços ou de identidade? Em que você deseja se conectar? O que essas empresas oferecem como prestadores de serviços ou de identidade? Você começa com SAML e ramifica posteriormente para o OAuth / OpenID à medida que suas conexões o tornam disponível?

Boa sorte e espero ter ajudado.


1 para resposta № 2

AFAIK, os três que você marcou são os mais comuns: oAuth, SAML e OpenID. Estes 3 não são "tecnologias", mas são especificações. Cada um tem prós e contras ...

Se você está prestes a implementar sua própria identidadeFornecedor, eu preferiria o oAuth - será mais fácil para você implementar. O SAML IDP é muito mais complicado - o Shioboleth não é fácil de implementar. Você pode usar a extensão Spring para a implementação do oAuth 2.0.

HTH.