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="<,>,*,%,&,\,?"/>
<customErrors mode="Off"/>
<authentication mode="Windows"/>
我应该改变认证模式什么?
非常感谢!
答
据我所知,如果你有启用Web应用程序的认证/授权AD登录如下。
你不需要更改任何代码。如果用户想要访问您的Web应用程序,Azure会自动将用户重定向到AD登录页面。
如果用户登录成功,那么它会返回一个令牌到应用程序,在此令牌包含用户的信息。
更新:
我建议你可以用湛蓝的广告图形API来获取用户信息。
如果你想使用蔚蓝广告图形API,您需要获得访问令牌。
我建议你可以先访问此url。
使用搜索栏搜索您的网页,手机或API应用程序。
单击编辑以启用更改。
设置additionalLoginParams以下几点:
["response_type=code id_token", "resource=https://graph.windows.net"]
点击页面顶部的读/写按钮启用更改。
单击PUT按钮保存您的更改。
这样的结果是:
然后,你可以在你的应用程序与令牌发送请求,以获取用户信息,添加以下代码。
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应用程序足够的权限以启用获取这些值。
图片是这样的:
我已经做到了,但我想知道如何获得该令牌进入我的应用程序,这样我可以检索像安全组信息,用户所属,资料图片等 – MV23
我已经更新了我的答案,我建议你可以发送请求到AD图获取用户信息。 –
谢谢你的详细解答。我会试试看。 – MV23