我们已经在我们的web应用程序上实现了Microsoft Azure oauth2,我们正在努力解决用户在使用该oauth2方法时出现的常见错误。
错误:OAuth2:: error, invalid_grant: AADSTS65001: No permission to access user information is configured for '…的申请,或已过期或被撤销。与azure oauth流中82%的错误相似。
我们的配置如下:
# ==> Office 365 OAuth2
config.omniauth :azure_oauth2,
client_id: '...',
client_secret: '...',
tenant_id: '...',
resource: 'https://outlook.office365.com/',
setup: lambda { |env|
params = Rack::Utils.parse_query(env['QUERY_STRING'])
options = env['omniauth.strategy'].options
case params['state']
when 'calendar'
options[:prompt] = 'login'
when 'select_account'
options[:prompt] = 'login'
end
}
我们知道这个错误可以由使用非Office 365帐户引起。因为我们的资源是'https://outlook.office365.com/',因为我们的应用程序需要能够与您的日历交互,用户必须通过office365帐户进行身份验证。其他帐户,如microsoft live帐户,也会导致此错误。
1 -还有什么可能导致这个错误?
2 -有没有办法限制azure oauth流,只允许真正的office 365登录?
原因是:如果用户被锁定并且必须重置他的密码或任何其他无效尝试登录到Azure AD(针对o365对用户进行身份验证)将使您的应用程序具有的刷新令牌无效。因此,应用程序将通过抛出此错误来优雅地处理更改的密码(旧的刷新令牌)。在这种情况下,你的应用程序应该重定向用户到授权页面来验证用户。