Eu tenho um site do SharePoint 2010 configurado paraReivindicações apenas como a parte respondendo ao ADFS. Eu também tenho um aplicativo ASP.NET configurado para declarações usando WIF + extensão para SAML 2.0 CTP como a parte respondendo ao mesmo servidor ADFS.
Se eu navegar para o SharePoint, eu serei redirecionado para o servidor ADFS (https: //.../adfs/ls? ...) e apresentado com um prompt de login do Windows. Se eu, em seguida, navegar na mesma instância de navegador para o meu aplicativo ASP.NET, o redirecionamento ocorre rapidamente para o mesmo servidor ADFS, autentica-se automaticamente e redireciona de volta para o aplicativo ASP.NET sem um prompt de segurança. Como em Como compartilhar o contexto de autenticação entre um site do SharePoint 2010 e aplicativos ASP.NET.
O problema ocorre quando eu incorporar o ASP.NET em um IFrame em uma web part do SharePoint. Ao iniciar uma nova instância do navegador e navegar para o SharePoint, recebo a solicitação de login do Windows. À medida que a página é carregada até o IFrame, obtenho um segundo prompt do Windows para o mesmo servidor para o aplicativo ASP.NET incorporado. Se eu cancelar o prompt, recebo um 401 Unauthorized in the IFrame. Se eu navegar para o aplicativo ASP.NET, eu não sou solicitado e ele faz logon automaticamente. Navegando de volta para o aplicativo do SharePoint, a página será carregada, incluindo o conteúdo do IFrame sem prompts.
O ponto de extremidade do SharePoint está usando o ponto de extremidade passivo do WS-Federation para https://sharepoint:port/_trust/
com ligação POST. O ponto de extremidade do aplicativo ASP.NET está usando pontos de extremidade do consumidor de asserção SAML https://aspnetapp/
com vinculação POST e Artefato. As declarações transmitidas de ambas contêm todas as informações necessárias para cada aplicativo.
Alguém sabe como evitar o segundo prompt de login ao usar um IFrame no SharePoint?
Respostas:
1 para resposta № 1Agora funciona como esperado com o logon único após a atualização para System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0
do agora construído em classes WIF. Eu estou supondo que houve um problema de compatibilidade com o Microsoft.IdentityModel.Web.Saml2AuthenticationModule
Extensão CTP do SAML 2.0 que nunca foi concluída.
0 para resposta № 2
Apenas um tiro no escuro, mas assumindo o costumeO aplicativo ASP .NET e o SharePoint estão em duas máquinas separadas, então pode haver algumas sutilezas sobre o Kerberos, já que a página ASP .NET está em um IFRAME - pode ser que um ticket do kerberos precise ser passado entre o SharePoint para o ASP .NET.
HTH.
0 para resposta № 3
Este é apenas um palpite, mas acredito que isso ocorra porque ambos os sites, o site do Sharepoint e o site asp.net incorporado a partir do iframe, começam a carregar ao mesmo tempo.
Como ambos não são autenticados, ambos vão parao Adfs. Mas como você não está autenticado, o Adfs inicia o desafio 401, solicitando a autenticação. No entanto, o seu navegador não apresenta os dois prompts de login ao mesmo tempo. Em vez disso, você obtém o primeiro prompt de login e quando faz login com sucesso, a partir do momento em que o Adfs reterá a autenticação, de modo que qualquer outro site que esteja chegando para receber as reclamações seja gratuito. Mas o site interno, o asp.net, já iniciou o processo de login! Seu navegador não sabe disso e força você a continuar o login.
Como conclusão, minha ideia seria ter umPágina do sharepoint que requer autenticação e que, em seguida, redireciona para outra página que tem o site asp.net em um iframe para que seu navegador não tente iniciar a seqüência de logon para ambos os sites ao mesmo tempo.