[英]Azure AD authentication between applications
我有一个名为“ Apple”的应用程序,该应用程序已在Azure AD中注册,并具有Azure Management API应用程序的委派权限。 当请求此应用程序时,它将创建一个Azure资源ex。 自动存储帐户,可以正常运行。
我还有另一个应用程序,它是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应用程序已将Authorize属性添加到控制器。 该应用程序使用Owin和oauth应用程序配置,并带有以下代码
public void ConfigureAuth(IAppBuilder app)
{
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
TokenValidationParameters = new TokenValidationParameters
{
ValidAudience = ConfigurationManager.AppSettings["ida:Audience"]
},
});
}
请注意,访问令牌是使用其自己的AppId和密钥从第二个应用程序检索的; 而其他(Apple)应用程序使用其自己的AppId和密钥来验证令牌。
所以我的问题是, APPLE应用程序总是返回401不授权代码
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.