我们已经在我们的网络应用上实施了Microsoft Azure oauth2,我们正在尝试解决用户在使用该oauth方法时遇到的常见错误。
错误: OAuth2 ::错误,invalid_grant:AADSTS65001:没有为“...”应用程序配置访问用户信息的权限,或者它已过期或已撤销。类似于约82%的我们在azure oauth流程中的错误。
这是我们的配置:
# ==> 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/”,并且由于我们的应用需要能够与您的日历进行互动,因此用户必须使用Office 365帐户进行身份验证。像微软真实账户这样的其他账户会导致此错误。
问题
1 - 还有什么可能导致此错误?
2 - 有没有办法将azure oauth流量限制为仅允许真正的Office 365登录?
答案 0 :(得分:0)
原因是:如果用户被锁定并且不得不重置其密码或任何其他无效尝试登录Azure AD(其中针对o365对用户进行身份验证)将使应用程序具有的刷新令牌无效。因此,应用程序将通过抛出此错误来优雅地处理更改的密码(旧刷新令牌)。在这种情况下,您应用应将用户重定向到授权页面以对用户进行身份验证。
希望这有帮助。