在允许Moodle与Azure AD集成SSO之后,当Moodle在请求中向Azure AD发送一个无声标志时,它不会响应请求。并显示以下错误。AADSTS50058:一个无声的登录请求被发送,但是没有用户被注册。用于表示用户会话的cookie在向Azure的请求中没有发送。如果用户使用Internet或Edge,并且发送无声登录请求的web应用程序位于与Azure端点(login.microsoftonline.com)不同的IE安全区域,则会发生这种情况。
我期待的是Azure AD像ADFS一样将无声的登录请求重定向回服务Moodle。
发布于 2019-12-05 23:25:31
您检查过这方面的一些故障排除指南吗?
我的同事弗兰克·胡( Frank )在博客上写道:
出现错误的原因是因为向AADSTS50058端点发送了一个无声的登录,但是没有检测到AADSSO。此cookie确定用户是否已登录。只有当用户已经登录或有刷新令牌来交换新的访问令牌时,才能使用静默登录。 通过第一次登录时签入KMSI框,这将添加KMSI,使您可以刷新访问令牌,以便用户在较长时间内不会收到此错误。
其他可能的解决办法:
可能的解决方案#1主动检查Expiration您可以尝试通过检查是否有有效的id令牌来防止此错误发生。如果您的ID令牌无效,您将要求用户再次登录。您可以通过使用AuthenticationContext.getCachedToken(clientID)获取令牌,然后检查JWT令牌中的Expiration来检查ID令牌是否有效。 可能的解决方案2捕获错误并再次要求用户登录以解决此错误,您将需要在回调中捕获此错误,该回调可以传递给获取令牌ADAL函数。如果发生AADSTS50058错误,您将要求用户再次登录。 可能的解决方案#3浏览器扩展Cookie阻止程序和第三方Cookies禁用一些用户可能会经历这个问题,因为浏览器扩展是阻塞Cookie的跟踪目的。这将导致此AADSTS50058错误发生,您需要在浏览器扩展中白名单login.microsoftonline.com端点,以避免再次收到此错误。 如果浏览器中禁用了第三方cookie,也会发生此错误。重新启用浏览器中的第三方cookie,以防止此错误发生。
https://stackoverflow.com/questions/58763393
复制相似问题