可能发生此错误的原因列表:OAuth2 :: Error,invalid_grant:AADSTS65001

时间:2015-07-21 20:18:44

标签: azure oauth-2.0 office365

我们已经在我们的网络应用上实施了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登录?

1 个答案:

答案 0 :(得分:0)

原因是:如果用户被锁定并且不得不重置其密码或任何其他无效尝试登录Azure AD(其中针对o365对用户进行身份验证)将使应用程序具有的刷新令牌无效。因此,应用程序将通过抛出此错误来优雅地处理更改的密码(旧刷新令牌)。在这种情况下,您应用应将用户重定向到授权页面以对用户进行身份验证。

希望这有帮助。