加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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应用程序将“授权”属性添加到控制器.
该应用程序使用带有oauth应用程序的Owin进行配置,并带有以下代码

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新门户进行预览功能!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读