У меня есть .Net 4.5 MVC4 веб-приложение, работающее с аутентификацией ADFS2. Когда я перехожу на веб-сайт, меня перенаправляют и регистрируют через сервер федерации, эта часть отлично работает.ADFS 2.0 MVC4 Получить информацию о пользователе
Теперь в моем приложении я хочу получить информацию о пользователе. Нашел много страниц, описывающих, как я должен делать это при поиске в Интернете, но я должен что-то пропускать, как бы я ни делал это, я возвращаю пустое/пустое значение.
Я создал контрольный контроллер, который просто распечатывает информацию в двух объектах Claims, которые я нашел в google.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Web;
using System.Web.Mvc;
using System.Web.Script.Serialization;
namespace Web.Controllers
{
public class ClaimsController : Controller
{
public String Index()
{
System.Security.Claims.ClaimsPrincipal cp =
System.Security.Claims.ClaimsPrincipal.Current;
Microsoft.IdentityModel.Claims.IClaimsIdentity ci =
Thread.CurrentPrincipal.Identity as Microsoft.IdentityModel.Claims.IClaimsIdentity;
var o = new
{
cp_IsAuthenticated = cp.Identity.IsAuthenticated,
cp_AuthenticationType = cp.Identity.AuthenticationType,
cp_Name = cp.Identity.Name,
//cp_Claims = (new JavaScriptSerializer()).Serialize(cp.Claims), // circlular reference
ci_IsAuthenticated = ci.IsAuthenticated,
ci_Label = ci.Label,
ci_Name = ci.Name
//ci_Claims = (new JavaScriptSerializer()).Serialize(cp.Claims) // circular reference
};
return (new JavaScriptSerializer()).Serialize(o);
}
}
}
Результатом этого является:
{
"cp_IsAuthenticated":true,
"cp_AuthenticationType":"Federation",
"cp_Name":null,
"ci_IsAuthenticated":true,
"ci_Label":null,
"ci_Name":null
}
Я нахожусь под впечатлением, что "Name" = ""
должно содержать имя, которое я поставил в AD.
Любые идеи относительно того, что я делаю неправильно или могу попробовать? Спасибо!