Como usar o parâmetro de WHR com o SharePoint 2010 e a autenticação de SAML

Artigo original publicado em 15 de setembro de 2011, quinta-feira.

Tenho visto muitas questões e confusões (e fiquei um pouco perdido) sobre reparos no SharePoint 2010 SP1 + CU de Junho para permitir o uso do parâmetro de WHR. Ele está funcionando agora, mas precisa de algumas coisas:

  1. Configure o SPTrustedIdentityTokenIssuer

O SPTrustedIdentityTokenIssuer tem uma propriedade agora chamada UseWHomeRealmParameter, que deve ser configurada para se adequar a fim de que o SharePoint passe o parâmetro de WHR junto com o IdP. Aí vai um trecho de powershell que usei para fazer isso:

$ap = get-sptrustedidentitytokenissuer -identity "ADFS with Roles"
$ap.UseWHomeRealmParameter = $true
$ap.Update()

Bem simples - agora o SharePoint enviará junto qualquer parâmetro de WHR que encontrar.

  1. Escreva ou faça "algo" para anexar o parâmetro de WHR

No meu caso, escrevi HttpModule para anexar o parâmetro de WHR. Foi assim que fiz, especificamente:

  • Na substituição da inicialização, adicionei um manipulador para o evento de BeginRequest
  • No código para o evento de BeginRequest, eu olhei para ver se:
    • O pedido está direcionado para _trust/default.aspx
    • E o pedido ainda NÃO tem um parâmetro de WHR incluído
  • Se o pedido atende os dois critérios descritos acima, eu crio um redirecionamento para o _trust/default.aspx. Quando faço isso, eu:
    • Adiciono cada parâmetro de sequência de consulta que existia ali antes
    • Anexo meu parâmetro de WHR até o fim
    • Defino a Response.Redirect de volta ao _trust/default.aspx

E foi assim. Fiz o teste usando uma sessão de navegador InPrivate no IE porque ele não usará os cookies de autenticação que poderia, por outro lado, livrar-nos dos resultados do teste. Até agora, todos os testes funcionaram conforme o esperado - também verifiquei no Fiddler que o parâmetro de WHR agora está fluindo para o ADFS (no meu caso) como desejado. Anexei o código-fonte do meu simples e pequeno projeto nesta postagem para ajudar você a começar.

Esta é uma postagem de blog traduzida. Veja o artigo original em Using the WHR Parameter with SharePoint 2010 and SAML Auth