Pergunta

Estou enfrentando alguns problemas para acessar pelo Claim Based ao meu serviço web.

No meu aplicativo há apenas reivindicação baseada:a autenticação do Windows está desabilitada e o NTLM também.Se eu acessar o Sharepoint pela interface web, ele me reconhecerá como UserX e tudo funcionará.

Se eu acessar pelo WS existem 2 cenários:

  • Chamada por UserY (Conta do Sistema) -> Tudo corre bem
  • Chamada por UserX (NO SA mas SCAdmin) -> Referência de objeto não definida para uma instância de um objeto

O código é muito simples, obtém apenas o nome de login do usuário atual:

using (SPSite sito = new SPSite("https://to0wss2k10rey03:50000/sites/Test1"))
            {
                using (SPWeb web = sito.OpenWeb())
                {
                    string Username =  web.CurrentUser.LoginName;
                }
            }

A exceção é levantada quando tento obter o CurrentUser, que parece ser nulo.

Foi útil?

Solução

Estou muito perplexo com a forma como funciona com UserY, sempre deve falhar.

Ao executar declarações sem NTLM, a única maneira de passar credenciais é por meio de um cookie FedAuth com seu token SAML STS do SharePoint.Para obter esse token, você precisa chamar o STS do SharePoint com um token SAML do seu provedor de identidade (ADFS?).Para obter esse token, você precisa ligar para o provedor de identidade com informações de login.

Ver Proxy de reivindicações – uma biblioteca C# para serviços da Web protegidos por declarações de chamada Conectando-se ao SharePoint com autenticação de declarações ou o blog principal sobre SharePoint com reivindicações Compartilhe e dipidade

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