Usando o Windows Identity Foundation para fazer login alguém em um aplicativo ASP.NET

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

  •  21-09-2019
  •  | 
  •  

Pergunta

Meu supervisor no escritório me diz que viu uma demonstração com uma versão pré-lançamento da Microsoft "Genebra" (agora Windows Identity Foundation), onde um desenvolvedor fez o seguinte:

  1. Ele configurou algum tipo de aplicativo da Web ASP.NET, onde um usuário pode fazer login usando um sistema de log-on personalizado. Nos bastidores, o aplicativo da Web registra o usuário como usuário em um diretório ativo.

  2. O usuário faz login.

  3. Depois que o usuário está conectado, o thread de aplicativos da Web ASP.NET é executado como o usuário conectado durante a sessão do usuário e pode acessar recursos na rede (como executar consultas SQL em tabelas cujo acesso é controlado Active Directory)

As etapas 2) e 3) são exatamente iguais a usar a configuração "Autenticação do Windows integrada" na guia "Segurança do diretório" das configurações do site no IIS. A etapa 1) é diferente porque estamos usando um sistema de log-on personalizado em oposição à autenticação Kerberos.

Queremos configurar um de nossos aplicativos para operar exatamente como descrito em 1), 2) e 3). No entanto, toda a documentação que eu vi em relação ao Windows Identify Foundation é sobre Cardspace e segurança federada. Não temos interesse em usar uma dessas tecnologias no momento.

Queremos apenas poder registrar os usuários nas contas do Active Directory nos bastidores.

Sim, tentamos o ActiveDirectoryMembershipProvider com Forms Authentication, mas é um Kludge completo para realmente acessar recursos na rede que exige representação em todas as páginas!

ATUALIZAÇÃO 7 de janeiro de 2010. Ok, eu trabalho nisso há um tempo, e tudo o que consegui ficar aquém do que quero alcançar. Talvez a funcionalidade que eu quero não esteja na versão de lançamento do WIF.

Aqui é onde estou agora. Encontrei alguma documentação no MSDN que indica que existem três identidades diferentes usadas no ASP.NET: a identidade especificada por HttpContext.Current.User, a identidade especificada por Thread.CurrentPrincipal, e finalmente a identidade especificada por WindowsIdentity.GetCurrent. link

Em um exemplo de onde quero usar o processo que estou procurando, quero executar uma consulta SQL como o usuário conectado. No meu depurador, vejo que defini facilmente o HTTPContext e encadeemos os usuários para o usuário logado. No entanto, quando me conecto ao servidor SQL usando a autenticação do Windows, ele sempre sempre se conecta como o WindowsIdentity.GetCurrent O usuário e esse usuário sempre são sempre a identidade do processo ASP.NET, a menos que eu esteja usando a autenticação do Windows com representação. Eu absolutamente não posso usar a autenticação do Windows com meu aplicativo, porque meus usuários devem fazer login tocando uma música de flauta mágica e a autenticação do Windows não tem suporte para fazer login com músicas de flauta mágica.

Para esclarecer, não há problema em obter um WindowsIdentity representando o usuário conectado (que conectou com uma música de flauta mágica). O problema é que não posso usar isso WindowsIdentity Para executar consultas SQL para meu usuário.

Foi útil?

Solução

O WIF permite configurá -lo para que um mapa de identidade baseado em reivindicações para uma conta de anúncio, a reclamação possa ser uma reivindicação de identidade federada ou entregue por meio de um cartão de informação. C2WTS executa esta função.

Mesmo quando ele mapeia por causa da delegação, você sempre terá que delegar se quiser usar a identidade do anúncio IIS está se passando - é assim que funciona, a menos que você configure Delegação de Kerberos para o IIS

Outras dicas

Você pode obter o mesmo usando a representação de identidade no ASP.NET. Além disso, você precisa ativar a autenticação integrada do Windows para o seu aplicativo da Web. Isso resolverá o objetivo. Se o usuário conectado não tiver os direitos necessários para acessar recursos, você obterá exceções de segurança que precisará lidar.

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