使用OpenID Connect / Azure AD的移动设备的身份验证与Microsoft Graph API不兼容



我有一个网站,使用OpenID连接身份验证/ADAL与Azure AD认证用户。该应用程序还使用Microsoft Graph API从AD检索用户数据。

身份验证自从几个月前实施以来,在各种设备上都运行良好。

但几周前(确切地说是8月23日),移动设备的身份验证突然停止工作,尽管代码或(据我所知)公司基础设施没有改变。

在ConfigureAuth方法的authorizationcoderreceived事件处理程序中,我以这种方式获取身份验证结果:

var authenticationContext = new AuthenticationContext(settings.Authority);
var authenticationResult = authenticationContext.AcquireTokenByAuthorizationCode(context.Code, new Uri(settings.RedirectUri), new ClientCredential(settings.ClientId, settings.ClientSecret), resource);

其中资源为Microsoft Graph API URL。

然而,自8月23日以来,AcquireTokenByAuthorizationCode抛出一个AdalServiceException,消息为:

AADSTS50097: Device authentication is required.

如果我在我的AcquireTokenByAuthorizationCode调用中省略资源参数或将其更改为"https://graph.windows.net",例如,来自移动设备的身份验证就像一个魅力。但是我显然不能访问MS Graph API。

是否有办法解决这个问题,以便我可以访问MS图形API,并让用户登录移动设备?

Sriram的答案是正确的。

公司管理员已启用Exchange Online的条件访问策略,该策略目前也适用于Microsoft Graph。我们意识到这会影响使用Microsoft Graph来处理邮件/日历以外的工件的应用程序,我们正在努力将它们解耦。这一变化将在未来几个月内推出。请与您的公司管理员确认是否可以放宽该政策。如果不可行,请联系我们的支持渠道,要求将Microsoft Graph从策略执行中排除

最新更新