来自ADAL的Cordova令牌请求从Web Api返回401响应



我希望有人能帮上忙:

我有一个使用Azure AD承载身份验证保护的web api,其中我有两个web客户端,它们可以使用AD中的承载令牌在web api上成功地进行身份验证。web api和两个web应用程序都配置为AD中的应用程序。我曾尝试使用ADAL for Cordova访问web api iOS/Android应用程序,但它返回401。

ClaimsPrincipal.Current.Identity.IsAuthenticated返回false。

我正在使用在Azure AD中安装的本机应用程序的客户端id,并且我正在接收令牌,但此令牌无效。在我解析了jwt.io上的令牌后,一切似乎都是正确的,但我注意到令牌没有头部。我添加了访问WebApi的权限,并以用户身份登录和访问AD。我在Cordova中使用的代码如下,我使用的权限与其他正在运行的应用程序相同。其中resource是AD中Web Api的应用程序Id,client Id是Azure AD.中本机应用程序的客户端Id

// Attempt to authorize user silently AuthenticationContext.acquireTokenSilentAsync(resource, clientId) .then(function (result) { sessionService.logIn(result.idToken); console.log(result); deferred.resolve(); }, function () { // We require user credentials so triggers authentication dialog AuthenticationContext.acquireTokenAsync(resource, clientId, redirectUri) .then(function (result) { console.log(result); sessionService.logIn(result.idToken); deferred.resolve(); }, function (err) { console.log("Failed to authenticate" + err); deferred.reject("failed to authenticate"); }); });

我也尝试过使用result.accessCode,但也不起作用。Web Api中的StartUp.Auth.cs:-

app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll); app.UseWindowsAzureActiveDirectoryBearerAuthentication( new WindowsAzureActiveDirectoryBearerAuthenticationOptions { Tenant = ConfigurationManager.AppSettings["ida:Tenant"], TokenValidationParameters = new TokenValidationParameters { ValidAudiences = Audiences } }); }

有人能帮忙吗?

感谢

您似乎向API发送了错误的令牌-您应该发送result.accessToken。请参阅https://github.com/Azure-Samples/active-directory-cordova-multitarget/blob/master/DirSearchClient/js/index.js例如。

相关内容

  • 没有找到相关文章

最新更新