我有一个API应用程序,它已经与网关主机一起正常工作,现在网关主机已被弃用我正在尝试遵循迁移指南.我使用2.8.1 SDK重新部署了我的服务,可以使用AAD或Microsoft帐户使用浏览器登录服务,并使用Swagger测试服务.但是,我正在尝试让客户端使用ClientId和Secret访问该服务.代码能够从AAD获取访问令牌,但每当我尝试访问其中一个服务资源时,我总是会收到401错误.
当我调试服务时,我在日志中看到以下内容:
Microsoft.Azure.AppService.Authentication Verbose: 0 : Received request: GET https://[myService].azurewebsites.net/api/[myResource]
Microsoft.Azure.AppService.Authentication Warning: 0 : JWT validation failed: IDX10214: Audience validation failed. Audiences: 'https://[myService].azurewebsites.net/'. Did not match: validationParameters.ValidAudience: '[AAD ClientId]' or validationParameters.ValidAudiences: 'http://[myService].azurewebsites.net'.
Microsoft.Azure.AppService.Authentication Information: 0 : Sending response: 401.71 Unauthorized
The thread 0x3b00 has exited with code 0 (0x0).
Run Code Online (Sandbox Code Playgroud)
似乎问题是提供请求的受众是https,但validParameters.ValidAudiences集合仅包含http.
我看不到配置Audience的任何方式,并且在Visual Studio 2015创建App Service时似乎正在设置基于http的受众.有没有办法手动编辑ValidAudience集合?
作为参考,我的客户代码是:
private static void Main(string[] args)
{
string app_id_url = "https://[myService].azurewebsites.net/";
string authority = "https://login.windows.net/[myDirectory].onmicrosoft.com/";
string clientId = "[AAD ClientId]";
string clientSecret = …Run Code Online (Sandbox Code Playgroud) 我有一个与这篇文章类似的问题:使用 ADAL 对 Azure API 应用程序进行身份验证,但就我而言,我有一个客户,其 Java 客户端托管在 JBoss 中,需要访问我的 API。该服务被保护为“公共(经过身份验证)”,并且我从浏览器访问它没有任何问题。我知道我可以在 .net 中创建 Azure API 应用程序客户端,但我找不到任何有关如何从 Java 进行身份验证的示例。目前这是否可能,如果可以,是否有人有任何有帮助的样本或建议?