我正在编写一个C#.NET应用程序。它连接到我们在Azure上的服务,该服务配置为使用AAD。反过来,我们的服务尝试通过EWS调用Exchange。
这一切对我来说都很好,直到我们最近将我们的服务位部署到具有新应用注册的新Azure Web应用程序。它们都已正确配置,我们团队中的其他开发人员可以使用该服务进行身份验证并按预期使用它。
当我尝试连接到该服务时,出现以下错误: AADSTS65001:用户或管理员未同意使用ID为'61a8b794-7f67-4a01-9094-fcdd45693eaa'的应用程序。发送此用户和资源的交互式授权请求。 跟踪ID:ece7c5d0-2ecb-4096-a87a-2cd33271d65d 相关ID:093b5935-3b06-4d76-91a9-6619bc179544 时间戳:2017-02-09 23:19:28Z
在部署新服务后尝试连接时,我从未出现过同意提示。
我不确定导致此错误的用户帐户是什么(它发生在我的帐户的多台计算机上),而其他人可以成功连接。
以下是用于获取服务中令牌的一些代码:
var bootstrapContext = ClaimsPrincipal.Current.Identities.First().BootstrapContext as System.IdentityModel.Tokens.BootstrapContext;
var upn = ClaimsPrincipal.Current.FindFirst(ClaimTypes.Upn);
var email = ClaimsPrincipal.Current.FindFirst(ClaimTypes.Email);
var userName = upn != null ? upn.Value : email?.Value;
accessToken = bootstrapContext.Token;
ClientCredential clientCred = new ClientCredential("61a8b794-7f67-4a01-9094-fcdd45693eaa", appKey);
UserAssertion assertion = new UserAssertion(accessToken, "urn:ietf:params:oauth:grant-type:jwt-bearer", userName);
AuthenticationContext authContext = new AuthenticationContext("https://login.microsoftonline.com/microsoft.onmicrosoft.com");
AuthResult = authContext.AcquireToken("https://outlook.office365.com", clientCred, assertion);
为什么我不会得到同意提示,但我团队中的其他用户有什么想法?
答案 0 :(得分:0)
根据描述,您正在使用Azure AD开发多层应用程序。
由于您在使用新应用时提到此问题,您是否将新应用配置为服务应用的knownClientApplications
(61a8b794-7f67-4a01-9094-fcdd45693eaa)?
如果是,您应该在登录Web应用程序时同意服务应用程序(请参阅here关于多层应用程序)。
为什么只有你得到这个问题的问题可能是其他人之前已经同意这个应用程序。
如果有帮助,请告诉我。