Há uma razão pela qual os desenvolvedores de software não são externalização de autorização?

StackOverflow https://stackoverflow.com/questions/955399

Pergunta

A proposta de valor da externalização de identidade está começando a aumentar, onde muitos sites agora aceitar OpenID, CardSpace ou de identidade federada.No entanto, muitos desenvolvedores ainda não tenham tomado o próximo passo para exteriorizar a autorização e o uso de abordagens baseadas em XACML.

É a razão pela falta de consciência ou algo mais?Como você poderia esperar para saber sobre XACMLabordagens de base para o desenvolvimento de software?

Por favor note que eu estou perguntando sobre autorização, não de autenticação.

Foi útil?

Solução

Eu acho que a perspectiva de autorização externa é uma coisa muito mais difícil do que externalizar a autenticação (OpenID, Cardspace etc.). Isso se deve principalmente ao fato de que a autorização é muito mais específica do aplicativo. Qual pessoa A está autorizada a fazer em meu aplicativo, ele pode não ser capaz de fazer em seu aplicativo, e isso está assumindo que há algum paralelo comum entre o meu aplicativo e o seu, o que provavelmente não haverá.

Eu não quero dizer que a autorização externalizadora irá Nunca Faça o fim, mas sinceramente tenho dificuldade em apresentar razões pelas quais você realmente gostaria de fazer isso. Talvez por um conjunto de aplicativos que trabalhem lado a lado, mas, novamente, isso provavelmente seria suportado internamente, e não externamente.

Outras dicas

Além disso, lembre -se dessa autorização! == Autenticação. Só porque um usuário é autenticado não significa que você resolveu a parte da autorização do seu site. Você ainda precisa determinar quem consegue fazer o que e quando.

A principal razão pela qual continuamos a rolar o nosso é que as opções como OpenID et al são aparentemente apoiadas por sites de tecnologia. Somos um jogador menor, por isso não começamos a usar um provedor externo até que haja uma aceitação muito maior do usuário.

Não queremos a primeira coisa que um usuário precisa fazer em nosso site para envolver ir a outro site.

Parece que caía no mal -entendido que os outros têm - a questão era sobre autorização externa. Pessoalmente, eu só confiava na autorização distribuída em uma rede local, onde tenho controle sobre os servidores de autenticação e autorização. Eu nunca usaria a autorização externa em um site.

Abaixo estão meus comentários no OpenID como um serviço de autenticação.

1) Como foi apontado, autorização! = Autenticação. O OpenID lida com a autenticação, mas o proprietário do aplicativo da web ainda tem controle total sobre os direitos atribuídos a esse login. Isso é positivo, mas a confusão sobre isso é negativa.

2) Não consigo encontrar o link, mas o OpenID está aberto à engenharia social / principal nos ataques médios / de phishing. Os provedores tentam evitar isso (imagens de identificação, certificados de navegador, verificação de volta, etc.), mas não ajuda quando o site do Black Hat aparece uma caixa de diálogo / página que diz "Digite seu nome de usuário e senha do OpenId" e o gênio o usuário está em conformidade.

3) Cada provedor de um ID federado tem a capacidade (e alguns diriam responsabilidade) de rastrear todas as atividades de seus usuários, independentemente do site para o qual eles usam o ID. É por isso que o Google e o Yahoo são gung-ho para providenciar IDs federados, mas não tão empolgados com consumindo eles.

4) Ao contrário de um comentário acima, geralmente é o caso que o uso do OpenID reduz a barreira ao registro, especialmente quando uma interface do usuário útil ressalta que um novo usuário provavelmente já tem um OpenID. Isso é ainda mais verdadeiro quando você usa uma solução combinada do OpenID / OAuth, como o RPX.

Portanto, do meu ponto de vista, os riscos de usar o OpenID estão no usuário, não no site. Não posso impedir que o usuário seja phishd, fazendo com que ele tente se lembrar de mais um ID de usuário e senha. Além disso, os chapéus pretos não precisam fazer nada mais nefasto do que as senhas de usuário da loja para o site em texto simples para obter acesso às outras contas de um usuário. Quantas pessoas usam uma senha diferente para cada site o log?

A maioria dos projetos que fiz foram aplicativos proprietários de uso em grandes empresas e, nesses casos, os serviços de autenticação externa raramente são uma opção, mas a autenticação é tratada por algum serviço interno (como o Active Directory).

Deveria me tornar parte de um projeto que construiria um site público, eu definitivamente tentaria usar algo como o OpenID, em vez de hospedar minha própria autenticação.

Um problema é uma combinação de não inventada aqui e desconfiança de autoridades externas para a identidade (até pseudonomosa). Uma boa redação está aqui:

Além disso, acho que pode ser inércia. Sem um aplicativo assassino para alimentá -lo, as pessoas demoram a migrar. Dado o aumento do número de integrações do Facebook que vi ultimamente, acho que estamos no topo de uma encosta íngreme, prestes a entrar nesse mundo.

Como outro pôster indicou, a autorização geralmente é específica de aplicação. O que você pode fazer em um aplicativo varia significativamente do que você pode fazer em outro. Especialmente em aplicativos de cliente, a autorização geralmente é mais naturalmente tratada pelo aplicativo.

O desempenho é outra preocupação. Isso pode ser visto obtendo a implementação XACML da Sun e usando -a para externalizar alguma autorização. Você incorre em custos de rede em ambos os lados da solicitação que (dependendo da maneira como a solicitação/resposta do arquiteto etc.) pode exceder em muito o custo real da decisão de autorização. Crie isso em um aplicativo COTS, onde você tem menos liberdade para otimização de desempenho e as coisas pioram ainda.

No entanto, acho que algumas das áreas promissoras estão em torno da conformidade regulatória. Existem algumas autorizações que não variam de acordo com a aplicação. Transferência de informações ou materiais proprietários ou classificados, por exemplo. Nesses casos, um caso forte pode ser feito para o mesmo controle existente em cada aplicativo, porque o inverso é muito ruim. Ter várias implementações e regras para o mesmo controle de acesso é um pesadelo de gerenciamento. Um lugar fácil para começar com uma estrutura de controle como o XACML pode ser começar com o que alguém pode ver e depois trabalhar com o que alguém pode fazer.

Eu acho que depende do tipo de projeto em que você trabalha. Se o cliente quiser armazenar a autorização, não há como usar o OpenID ... Eu desenvolvo um pequeno projeto usando o Google Apps Engine e, portanto, uso o Google para fazer a autorização. Portanto, depende fortemente do tipo de projeto.

Várias razões:

  1. Como alguns dos comentários demonstrado, há uma percepção geral de que "a autorização é local", o que implica que há pouco o potencial de re-uso da caro-para-manter-a-alta-qualidade "assunto atributos necessários para importantes decisões de acesso.(Eu acredito que não há alto potencial de reutilização, pois algumas leis/regs são amplamente aplicáveis, mas toda a discussão, isso é muito tempo para este formato.)
  2. A falta de infra-estrutura de dados:para aplicar a política de controle de acesso baseado em entre organizações (me usando/confiando alguns outros org autorização ("AuthZ") de dados para desbloquear o acesso aos meus dados) requer, no mínimo, que eu entendo a semântica do atributo (o que é uma "lei-enforcemment oficial"?O que é um "Cidadão americano".) Após isso, seria bom ter fácil de entender atributo padrões de qualidade e de certificação de terceiros do mesmo.(Alguns podem observar-se que estes requisitos são análogas às exigências para a PKI interoperabilidade:como é que isso vem junto?E isso é apenas um pedaço de dados, além de apoio material.)
  3. Impacto sobre os papéis/responsabilidades:exteriorizando a autorização, se a "funções" ou "atributos" ou "atributos digital com política", significa que o local "titular dos dados" perde o controle do recurso.Ele também reduz considerável de trabalho e a responsabilidade para a manutenção de listas de usuários.Este tipo de alteração eleva a implementação do externo AuthZ a partir de um problema técnico para a organização um assunto com o lado da política.
  4. A maioria das organizações não sabe e ainda não escrito o que as suas políticas são.O acesso pode ser "aquele que pergunta" ou "quem pede e eu gosto" ou "quem pode me dar algo, como o acesso aos seus dados." O real regras aplicadas podem ser muito feio quando eles são forçados a abrir exprimindo-se em uma política do idioma.E o conjunto de habilidades para uma boa interpretação de normas escritas em políticas digitais não cresce em árvores, também.Na verdade, o conjunto de habilidades é analista de negócios, ou um advogado, não É cara, e ferramentas para aquelas pessoas são raras, a não-existente.
  5. Quando você tem uma sólida regra de diretiva, você provavelmente vai descobrir que os atributos necessários para processá-lo não existem, eles não são tipicamente o tipo de coisa que você encontrar já no AD.Número de telefone NÃO é útil como um AuthZ atributo, e até mesmo "Organização" provavelmente não é apropriado para a maioria de lei ou regs você pode realmente documento.Isso para não mencionar as soluções e aproximações você tem que implementar (e aprovada) para expressar requisitos de política como "causa provável."
  6. Relativamente tratável, mas ainda real, é que muitos, muito difundida BERÇOS aplicativos não oferecem suporte externo de autorização, e muitos app-desenvolvedores não são usados para fazer a exteriorização e, portanto, (a) tentar convencê-lo de fora;ou (b) aprender sobre a sua moeda de dez centavos, e fazê-lo mal.

Soa muito mal, certo?Então, deixe-me terminar dizendo que eu acho que o jogo vale a vela, apesar de tudo.A lista de benefícios potenciais fica para outro post em outro momento.

Boa sorte!

Concorde com o ponto de Joseph na autorização sendo altamente específico do aplicativo.

Mas, além disso, a autorização de terceirização também traz uma grande preocupação de risco: como a autorização é altamente específica e granular, uma vez que você externaliza a autorização para um provedor de serviços, migrando ou substituindo esse provedor se torna uma tarefa quase impossível. Você está no gancho irrevogavelmente.

Portanto, na avaliação de seus riscos e benefícios, o raciocínio comercial leva você a evitar uma dependência tão difícil.

Para mim, pessoalmente, esta é a primeira coisa que já ouvi sobre autorização externa. Portanto, pode ser apenas a falta de consciência.

Pesquisando agora ..

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