Preciso do meu próprio provedor de conexão oauth e / ou openid [closed]

2

Desculpe .... Eu quero reformular completamente esta questão :, e eu perguntei a a mesma pergunta em Segurança da Informação agora

O sistema em que estou trabalhando terá um aplicativo para dispositivos móveis, um portal da web e uma API baseada em HTTP.

A pergunta que não consigo encontrar uma resposta:

Preciso implementar os pontos de extremidade do token openid connect e / ou oauth e gerar tokens para o cliente acessar a minha API? Ou eu "de alguma forma" habilitar o (s) cliente (s) a acessar a API usando tokens emitidos pelo provedor de ID aberto do usuário?

Mais informações:

Eu quero permitir que os usuários possam se registrar e fazer login usando seus IDs do Google / Facebook.

Dentro da API, eu armazeno uma tabela de usuários com alguns atributos, o mínimo porque não preciso de mais do que isso, mas essencialmente:
Usuários da tabela:
- uid
- real_name
- contact_number
- email_address
- is_active
- have_admin_rights

Eu também configuraria uma tabela para os IDs dos usuários, assim:

Tabela open_ids:
- uid
- user_id (Referências usuários (uid)
- open_id

(para que um usuário possa usar qualquer um dos Open-IDs que deseja associar à conta dele)

Em outro lugar, faço referência ao ID do usuário, por exemplo:
Tabela foo:
- uid
- bar
- bla
- last_modified_by_user_id (usuários References (uid))

Atualmente, na minha configuração de teste, tenho uma tabela de "senhas", por exemplo:
Senhas da tabela:
- uid
- user_id (usuários de referências (uid))
- password_hash

(Nota: A idéia é se livrar dessa tabela em breve e usar o open_id in stead. Mas quais bibliotecas eu escolho muito depende de qual funcionalidade eu implemento e o que eu uso de fontes externas)

Percebi que preciso armazenar os tokens de acesso, pois preferiria não duplicar os dados do usuário que já estão em seus perfis de serviço social e precisar acessar esses serviços para cada usuário de tempos em tempos. Mas como faço para obter o token de acesso do cliente (onde o usuário se inscreveu) para a API (que é o recurso compartilhado entre os vários clientes)

O problema não é realmente enviar o token do cliente para a API - posso apenas ter uma função na API para "registrar" um usuário e alguns outros pontos de extremidade para quando um usuário está sendo autenticado. O problema é que um token de acesso é destinado apenas a um cliente específico.

Assumindo que eu NÃO implemente um servidor de autorização e de alguma forma possa usar os serviços do google, etc: Nos sites do desenvolvedor, por exemplo, para google, facebook, eu posso registrar meu cliente e ser emitido o cliente secret / client id, mas Em seguida, uso as mesmas credenciais de cliente de ambos, o cliente e a API?

Ou talvez as credenciais do cliente sejam mantidas apenas pela API, e o serviço de front-end depende da API como uma etapa intermediária quando um usuário se registra? Isso é terrivelmente perigoso para ser inseguro. Então, a API é outro cliente separado aos olhos do provedor de OpenID?

Assumindo que eu preciso implementar um servidor de autorização, também preciso ser um provedor de ID aberto? Parece que neste caso teria que ser openid-connect porque eu preciso ter autenticação e autorização. Mas neste caso estou realmente perdido em termos de como realizar um novo registro de usuário, e as perguntas anteriores não vão embora. Parece que eu deveria ser capaz de permitir que o cliente se conecte e obtenha os tokens de autenticação / acesso e ID do usuário do Open IdP e, em seguida, "registre" o usuário com a API.

    
por Johan 03.05.2015 / 23:13

0 respostas

Tags