Pergunta

Como você implementaria um sistema com os seguintes objetivos:

  • Gerenciar autenticação, autorização paracentenas de milhares de usuários existentes atualmente totalmente integrado ao aplicativo de um fornecedor terceirizado (queremos envolver esses usuários em algo que gerenciamos e fazer com que nossos aplicativos funcionem contra isso, além de nossos fornecedores terceirizados trabalharem contra isso).
  • Gerenciar informações de perfil vinculadas a esses usuários
  • Deve poder ser acessado a partir de qualquer número de aplicativos da web em praticamente qualquer plataforma (Windows, *nix, PHP, ASP/C#, Python/Django, etc.).

Aqui estão alguns exemplos de implementações:

  • Servidor LDAP/AD para gerenciar tudo.Use o esquema personalizado para todos os dados do perfil.Tudo pode ser autenticado em LDAP/AD e podemos armazenar todos os tipos de ACLs e dados de perfil em um esquema personalizado.
  • Use LDAP/AD apenas para autenticação, vincule usuários LDAP a um servidor de perfil/autorização mais robusto usando algum tipo de banco de dados tradicional (MSSQL/PostgreSQL/MySQL) ou banco de dados baseado em documento (CouchDB, SimpleDB, etc.).Use LDAP para autorização e, em seguida, acesse o banco de dados para obter informações mais avançadas.
  • Use um banco de dados tradicional (Relacional ou Documento) para tudo.

Algum desses três é o melhor?Existem outras soluções que se enquadrem nos objetivos acima e sejam mais fáceis de implementar?

** Devo acrescentar que quase todos os aplicativos que serão autenticados no banco de dados do usuário estarão sob nosso controle.Os únicos estranhos serão os aplicativos dos quais estamos removendo o banco de dados de usuários atual e talvez 1 ou 2 outros.Nada tão amplo que precise de um servidor openID.

Também é importante saber que muitos desses usuários têm essas contas há 5 a 8 anos e conhecem seus logins e senhas, etc.

Foi útil?

Solução

Há uma diferença entre autenticação e autorização/criação de perfil, portanto não force necessariamente ambas em uma única ferramenta.Sua segunda solução de usar LDAP para autenticação e um banco de dados para autorização parece mais robusta, pois os dados LDAP são controlados pelo usuário e o banco de dados seria controlado por um administrador.Este último provavelmente se transformaria em estrutura e complexidade ao longo do tempo, mas a autenticação é apenas essa autenticação.A separação destas funções será mais fácil de gerir.

Outras dicas

Se você já possui uma infraestrutura ActiveDirectory, esse será o caminho a seguir.Isto será particularmente vantajoso para empresas que já possuem servidores Windows configurados para autenticação.Se for esse o caso, estou inclinado para o seu primeiro ponto em "exemplos de implementações".

Caso contrário, será uma disputa entre as opções AD e LDAP de código aberto.

Pode não ser viável implementar seu próprio esquema de autenticação para logon único (especialmente considerando a grande quantidade de documentação e trabalho de integração que você pode ter que fazer) e, obviamente, não agrupe seu servidor de autenticação com nenhum dos aplicativos em execução. seu sistema (já que você deseja que ele seja independente da carga de tais aplicativos).

Boa sorte!

Use LDAP/AD apenas para autenticação, vincule usuários LDAP a um servidor de perfil/autorização mais robusto usando algum tipo de banco de dados tradicional (MSSQL/PostgreSQL/MySQL) ou banco de dados baseado em documento (CouchDB, SimpleDB, etc.).Use LDAP para autorização e, em seguida, acesse o banco de dados para obter informações mais avançadas.

Temos diferentes sites com cerca de 100 mil usuários e todos funcionam com bancos de dados normais.Se a maioria dos aplicativos puder acessar o banco de dados, você poderá usar esta solução.

Você sempre pode implementar o seu próprio OpenID servidor.Já existe um Biblioteca Python para OpenID então deve ser bastante fácil.

É claro que você não precisa aceitar logins autorizados por outros servidores em suas aplicações.Aceite credenciais autorizadas apenas pelo seu próprio servidor.

Editar: Eu encontrei um implementação do protocolo de servidor OpenID no Django.

Editar2: Há uma vantagem óbvia na implementação do OpenID para seus usuários.Eles poderão fazer login no StackOverflow com seus logins :-)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top