Azure上的ASP.NET应用程序身份验证

问题描述:

因此,我有以前使用Windows身份验证方案的旧版ASP.NET应用程序。Azure上的ASP.NET应用程序身份验证

我现在想将它移植到Azure和已经配置在蔚蓝的门户网站在Azure Active Directory服务和我的组织目录已经在Azure上。

我现在想改变的web.config文件,所以我的应用程序识别Azure的身份验证,并使用这些凭据。

此前,该配置是这样

<system.web> 
    <compilation debug="true" targetFramework="4.6"/> 
    <httpRuntime targetFramework="4.5" maxQueryStringLength="2097151" requestPathInvalidCharacters="&lt;,&gt;,*,%,&amp;,\,?"/> 
    <customErrors mode="Off"/> 
    <authentication mode="Windows"/> 

我应该改变认证模式什么?

非常感谢!

据我所知,如果你有启用Web应用程序的认证/授权AD登录如下。

enter image description here

你不需要更改任何代码。如果用户想要访问您的Web应用程序,Azure会自动将用户重定向到AD登录页面。

如果用户登录成功,那么它会返回一个令牌到应用程序,在此令牌包含用户的信息。


更新:

我建议你可以用湛蓝的广告图形API来获取用户信息。

如果你想使用蔚蓝广告图形API,您需要获得访问令牌。

我建议你可以先访问此url

使用搜索栏搜索您的网页,手机或API应用程序。

单击编辑以启用更改。

设置additionalLoginParams以下几点:

["response_type=code id_token", "resource=https://graph.windows.net"] 

点击页面顶部的读/写按钮启用更改。

单击PUT按钮保存您的更改。

这样的结果是:

enter image description here

然后,你可以在你的应用程序与令牌发送请求,以获取用户信息,添加以下代码。

string accessToken = this.Request.Headers[ 
"X-MS-TOKEN-AAD-ACCESS-TOKEN"]; 
     // Call into the Azure AD Graph API using HTTP primitives and the 
     // Azure AD access token. 
     var url = "https://graph.windows.net/me?api-version=1.6"; 
     var request = WebRequest.CreateHttp(url); 
     var headerValue = "Bearer " + accessToken; 
     request.Headers.Add(HttpRequestHeader.Authorization, headerValue); 

     using (var response = request.GetResponse()) 


     using (var streamReader = new StreamReader(response.GetResponseStream())) 
     { 
      string jsonResponse = streamReader.ReadToEnd(); 
      Response.Write(jsonResponse); 
     } 

此URL用于获取当前用户信息。

https://graph.windows.net/me?api-version=1.6 

如果你想获得用户的组,我建议你可以改变为以下链接:

https://graph.windows.net/myorganization/me/$links/memberOf?api-version 

更多关于这个API的细节,你可以参考这个article

如果你想获得用户的个人资料图片,我建议你可以改变为以下链接:

https://graph.windows.net/myorganization/me/thumbnailPhoto?api-version 

更多细节,你可以参考这个article

注意:您需要授予您的Web应用程序足够的权限以启用获取这些值。

图片是这样的:

enter image description here

+0

我已经做到了,但我想知道如何获得该令牌进入我的应用程序,这样我可以检索像安全组信息,用户所属,资料图片等 – MV23

+0

我已经更新了我的答案,我建议你可以发送请求到AD图获取用户信息。 –

+0

谢谢你的详细解答。我会试试看。 – MV23