Problema de serviços da Web e autenticação baseada em declarações
-
09-12-2019 - |
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.
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