Microsoft.IdentityModel.Clients.ActiveDirectory AcquireTokenAsync 总是需要一个资源,而文档说它不需要
Microsoft.IdentityModel.Clients.ActiveDirectory AcquireTokenAsync always requires a resource when the documentation says it doesnt
我有一个要求,即我使用 Azure AD 通过 OAuth 2.0 验证我的 clinet 应用程序。
我们开始使用 Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenAsync 库,但您必须传递一个资源:
尽管此处的文档:
https://azure.microsoft.com/en-us/documentation/articles/active-directory-protocols-oauth-code/
说它是可选的:
我们不想传递 资源,因为我们的客户应该尽可能少地了解后端服务,以便将来的变化最小。
另一个要求是我们使用仅限应用程序的流程,因此我们不需要任何用户交互。
我尝试使用 RestSharp 直接编写 HTTP 休息调用,但我无法绕过弹出窗口。
任何帮助都会很棒。
我认为这个问题与 DDL 的版本有关,之前我遇到了同样的问题,然后我将我的 ddl 替换为以下版本
Microsoft.IdentityModel.Clients.ActiveDirectory.dll--> v2.23.0.0
现在对我有用了。
你可以在这里下载
https://www.nuget.org/packages/Microsoft.IdentityModel.Clients.ActiveDirectory/2.23.302261847
这个问题的解决方案是无论如何都要传递一个资源,但是在服务器端我们只是强制验证 return true 无论传递什么资源 URL:
TokenValidationParameters = new TokenValidationParameters
{
AudienceValidator = AudienceValidator,
},
private bool AudienceValidator(IEnumerable<string> audiences, SecurityToken securityToken, TokenValidationParameters validationParameters)
{
return true;
}
我有一个要求,即我使用 Azure AD 通过 OAuth 2.0 验证我的 clinet 应用程序。
我们开始使用 Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenAsync 库,但您必须传递一个资源:
尽管此处的文档: https://azure.microsoft.com/en-us/documentation/articles/active-directory-protocols-oauth-code/
说它是可选的:
我们不想传递 资源,因为我们的客户应该尽可能少地了解后端服务,以便将来的变化最小。
另一个要求是我们使用仅限应用程序的流程,因此我们不需要任何用户交互。
我尝试使用 RestSharp 直接编写 HTTP 休息调用,但我无法绕过弹出窗口。
任何帮助都会很棒。
我认为这个问题与 DDL 的版本有关,之前我遇到了同样的问题,然后我将我的 ddl 替换为以下版本
Microsoft.IdentityModel.Clients.ActiveDirectory.dll--> v2.23.0.0
现在对我有用了。
你可以在这里下载
https://www.nuget.org/packages/Microsoft.IdentityModel.Clients.ActiveDirectory/2.23.302261847
这个问题的解决方案是无论如何都要传递一个资源,但是在服务器端我们只是强制验证 return true 无论传递什么资源 URL:
TokenValidationParameters = new TokenValidationParameters
{
AudienceValidator = AudienceValidator,
},
private bool AudienceValidator(IEnumerable<string> audiences, SecurityToken securityToken, TokenValidationParameters validationParameters)
{
return true;
}