asp.net – 应用程序之间的Azure AD身份验证
发布时间:2020-12-16 07:42:07 所属栏目:asp.Net 来源:网络整理
导读:我有一个应用程序让我们将其命名为’Apple’,它在Azure AD中注册,具有Azure Management API应用程序的委派权限.当请求此应用程序时,它会创建azure资源.存储帐户自动,这很好. 我有另一个应用程序是MVC应用程序,它也在同一个AD租户注册.第二个应用程序使用以下
我有一个应用程序让我们将其命名为’Apple’,它在Azure AD中注册,具有Azure Management API应用程序的委派权限.当请求此应用程序时,它会创建azure资源.存储帐户自动,这很好.
我有另一个应用程序是MVC应用程序,它也在同一个AD租户注册.第二个应用程序使用以下代码来检索访问令牌: var clientCredentials = new ClientCredential(ConfigurationManager.AppSettings["AD_ClientID"],ConfigurationManager.AppSettings["AD_Client_AccessKey"]); var authContext = new AuthenticationContext(string.Format(ConfigurationManager.AppSettings["AD_Tenant_Login_Url"],ConfigurationManager.AppSettings["AD_Tenant_Id"])); var result = authContext.AcquireTokenAsync(ConfigurationManager.AppSettings["AD_Resource"],clientCredentials); if (result == null) { throw new InvalidOperationException("Could not get the token"); } return result.Result; 结果是具有不同属性的访问令牌.现在第二个应用程序,通过访问资源apple来检索访问令牌,然后将其传递给授权标头中的Apple应用程序. Authorization:bearer TokenString Apple应用程序将“授权”属性添加到控制器. public void ConfigureAuth(IAppBuilder app) { app.UseWindowsAzureActiveDirectoryBearerAuthentication( new WindowsAzureActiveDirectoryBearerAuthenticationOptions { Tenant = ConfigurationManager.AppSettings["ida:Tenant"],TokenValidationParameters = new TokenValidationParameters { ValidAudience = ConfigurationManager.AppSettings["ida:Audience"] },}); } 请注意,使用自己的AppId和Secret密钥从第二个应用程序检索访问令牌;而另一个(Apple)应用程序使用自己的AppId和密钥来验证令牌. 所以我的问题是,APPLE应用程序总是返回401而不是授权代码 解决方法
对于上面的问题,答案是,资源ID(在令牌请求期间)和Audience Id(在第二个应用程序中验证令牌期间)不匹配.保持这些解决了这个问题.
然后我遇到了另一个问题,我已经描述过here 看来,如果我使用较新的Azure门户(仍处于预览版本),则AD令牌不包括JWT令牌中的“角色”字段.如果我在旧门户中使用相同的过程来配置应用程序,那么AD在JWT令牌中包含“角色”字段,并且场景按预期执行. 我应该至少避免使用Azure新门户进行预览功能! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – OData和区分大小写
- .NET发送电子邮件的最佳方法(System.Net.Mail有问题)
- 在ASP.Net MVC中禁用会话状态每请求
- 使用WCAT对ASP.NET / IIS进行压力测试
- asp.net – ApplicationInstance.CompleteRequest不会停止执
- 在asp.net中将产品信息存储在购物车中的理想方式
- kendo-ui – 我可以在网格的数据绑定事件上传递参数吗?
- asp.net-core-mvc – EF7和GroupBy()无法翻译
- asp.net – 具有主动/主动粘滞会话的SignalR和负载平衡
- asp.net-mvc – 为什么.NET在MVC asp.net应用程序中生成两个