阅读ASP.net中的Azure AD登录用户详细信息

isa*_*ala 1 asp.net azure azure-active-directory

我正在asp.net(VS 2013)中实现Azure AD登录。.
我已经成功创建了登录和注销部件。

我的登录和注销方法如下。

public partial class Startup
{      

    private static string clientId = ConfigurationManager.AppSettings["ida:ClientId"];

    private static string aadInstance = ConfigurationManager.AppSettings["ida:AADInstance"];

    private static string tenant = ConfigurationManager.AppSettings["ida:Tenant"];

    private static string postLogoutRedirectUri = ConfigurationManager.AppSettings["ida:PostLogoutRedirectUri"];

    string authority = String.Format(CultureInfo.InvariantCulture, aadInstance, tenant);

    public void ConfigureAuth(IAppBuilder app)
    {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

        app.UseCookieAuthentication(new CookieAuthenticationOptions());

        app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions
            {
                ClientId = clientId,
                Authority = authority,
                PostLogoutRedirectUri = postLogoutRedirectUri,
                Notifications = new OpenIdConnectAuthenticationNotifications
                {
                    AuthenticationFailed = context => 
                    {
                        context.HandleResponse();
                        context.Response.Redirect("/Error?message=" + context.Exception.Message);
                        return Task.FromResult(0);
                    }
                }
            });
    }
}

public void SignIn()
    {

        if (!Request.IsAuthenticated)
        {                HttpContext.Current.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = "/" }, OpenIdConnectAuthenticationDefaults.AuthenticationType);
        }
    }

    public void SignOut()
    {          
        HttpContext.Current.GetOwinContext().Authentication.SignOut(
            OpenIdConnectAuthenticationDefaults.AuthenticationType, CookieAuthenticationDefaults.AuthenticationType);

    }
Run Code Online (Sandbox Code Playgroud)

但我的问题是我无法将登录用户详细信息(如username,Name)分配给asp:Label ..

我试过了

protected void Page_Load(object sender, EventArgs e)

    {
        if (!Request.IsAuthenticated)
        {
            string UserName = HttpContext.Current.GetOwinContext().Authentication.User.Identity.Name.ToString();
        }

        if (Request.IsAuthenticated)
        {

            string UserName = HttpContext.Current.GetOwinContext().Authentication.User.Identity.Name.ToString();

        }

    }
Run Code Online (Sandbox Code Playgroud)

这对我来说非常重要。任何人都可以帮助我。

Lil*_*045 6

本教程中有一个示例:https : //azure.microsoft.com/zh-cn/documentation/articles/active-directory-devquickstarts-webapp-dotnet/

您可以在Step4中看到获取用户信息的方法吗?

    public ActionResult About()
{
    ViewBag.Name = ClaimsPrincipal.Current.FindFirst(ClaimTypes.Name).Value;
    ViewBag.ObjectId = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
    ViewBag.GivenName = ClaimsPrincipal.Current.FindFirst(ClaimTypes.GivenName).Value;
    ViewBag.Surname = ClaimsPrincipal.Current.FindFirst(ClaimTypes.Surname).Value;
   // ViewBag.UPN = ClaimsPrincipal.Current.FindFirst(ClaimTypes.Upn).Value;

    return View();
}
Run Code Online (Sandbox Code Playgroud)