2016-07-25 98 views
1

我有一个要求,我使用Azure AD来使用OAuth 2.0验证我的clinet应用程序。Microsoft.IdentityModel.Clients.ActiveDirectory AcquireTokenAsync始终需要资源,当文档说明它不是

我们开始使用Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenAsync库,但你必须通过一个资源: enter image description here

即使文档在这里: https://azure.microsoft.com/en-us/documentation/articles/active-directory-protocols-oauth-code/

说,这是可选: enter image description here

我们不想通过资源,因为我们的客户应该尽可能少地了解ab退出后端服务,所以未来的变化很小。

另一个要求是我们使用app-only流程,所以我们不需要任何用户交互。

我已经尝试使用RestSharp直接HTTP休息调用,但我无法绕过弹出窗口。

任何帮助将是伟大的。

回答

0

对此的解决方案是无论如何传递资源,但在服务器端,我们只是强制验证,返回true,不管什么资源URL传递:

TokenValidationParameters = new TokenValidationParameters 
{ 
AudienceValidator = AudienceValidator, 
}, 
private bool AudienceValidator(IEnumerable<string> audiences, SecurityToken securityToken, TokenValidationParameters validationParameters) 
{ 
return true; 
} 
0

我想这个问题是关系到DDL的版本,以前我面临同样的问题,我已取代我的DDL以下版本

Microsoft.IdentityModel.Clients.ActiveDirectory.dll - > v2.23.0 .0

现在它适用于我。

,你可以在这里下载

https://www.nuget.org/packages/Microsoft.IdentityModel.Clients.ActiveDirectory/2.23.302261847

+0

你能给我更多的信息吗?我目前在DLL的3.12.0版本上。我为什么要回到2.23.0.0。此外,该资源仍然是强制性的 – RuSs

+0

我不确定,但我认为他们已经改变了整个身份模型的架构。 –