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)
这对我来说非常重要。任何人都可以帮助我。
本教程中有一个示例: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)
| 归档时间: |
|
| 查看次数: |
3073 次 |
| 最近记录: |