2
我有一個運行ADFS2身份驗證的.Net 4.5 MVC4 web應用程序。當我訪問網站時,我被重定向並通過聯合服務器登錄,這部分工作很好。ADFS 2.0 MVC4獲取用戶信息
現在在我的應用程序中,我想獲取有關用戶的信息。 發現大量的頁面描述我應該如何去做這件事時,谷歌搜索,但我必須失去一些東西,不管我如何做它我得到空白/空值回來。
我創建了一個測試控制器,打印出我在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" = ""
應該包含我在廣告設置的名下。
任何想法,我做錯了什麼或可以嘗試? 謝謝!