2014-11-25 35 views
1

目前,我使用以下代码提示重定向到Azure登录入口以在Azure登录屏幕输入有效的用户名和密码:使用ADAL库在后台向Azure进行身份验证而不重定向到Azure登录入口

public void SignIn() 
{ 
    // Redirect to the Azure sign in page. 

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

我如何可以改变上面的代码,这样,而不是重定向到Azure的第一和那边输入用户名和密码,我可以从我的网站直接输入用户名和密码,凭据传递沿Azure的背景,获取身份验证令牌并最终重定向到指定的返回url?

回答

0

这不支持。用户输入azure广告凭证的唯一地方是azure广告凭证收集页面。其他一切都被禁止,包括在iframe中托管该页面。这是出于安全原因。 HTH 五

+0

感谢vibronet,我决定去管理它在我的网站上手动(为我自己添加一个答案) – 2014-11-26 00:56:14

0

决定不从Azure的AD使用ClaimsPrincipal做,而不是跟随和手动在我的网站管理当前用户的会话:

private static string GetUserID(string userName, string password) 
{ 
    // Acquire the token for this user attempting to access the API. 

    var authenticationContext = new AuthenticationContext(Authority, TokenCache.DefaultShared); 
    var result = authenticationContext.AcquireToken(ApiResource, ClientId, new UserCredential(userName, password)); 

    return result.UserInfo.UniqueId; 
} 
+0

Zen Pak,在采用这种方法之前,你应该真的检查是否真的没有另一种选择。从[资源所有者密码凭证流程的OAuth 2.0 RFC部分](https://tools.ietf.org/html/rfc6749#section-1.3.3):“凭据只能在有较高 度的情况下使用(例如,客户端是设备操作系统的一部分或高度特权的应用程序)**,并且当其他授权许可类型不可用时**(例如授权代码)“。 (强调添加。) – 2014-11-26 06:15:17

+0

我会说,这是应用程序本身有权访问并且不基于最终用户身份验证的事情做到这一点。例如,对于Kayak,应用程序本身可能能够读取航班时刻表,而访问个人的预订则依赖于用户身份验证。 – 2017-07-18 21:46:13

相关问题