Hir*_*sai 5 asp.net asp.net-mvc active-directory azure azure-active-directory
我有一个应用程序让我们将其命名为'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;
Run Code Online (Sandbox Code Playgroud)
结果是具有不同属性的访问令牌.现在第二个应用程序,通过访问资源apple来检索访问令牌,然后将其传递给授权标头中的Apple应用程序.
Authorization:bearer TokenString
Run Code Online (Sandbox Code Playgroud)
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"]
},
});
}
Run Code Online (Sandbox Code Playgroud)
请注意,使用自己的AppId和Secret密钥从第二个应用程序检索访问令牌; 而另一个(Apple)应用程序使用自己的AppId和密钥来验证令牌.
所以我的问题是,APPLE应用程序总是返回401而不是授权代码
| 归档时间: |
|
| 查看次数: |
294 次 |
| 最近记录: |