2015-07-21 93 views
1

我们已在我们的Web应用程序上实现了Microsoft Azure oauth2,并试图解决用户在使用该oauth方法时遇到的常见错误。此错误可能发生的原因列表:OAuth2 ::错误,invalid_grant:AADSTS65001

错误:OAuth2 ::错误,invalid_grant:AADSTS65001:未为'...'应用程序配置访问用户信息的权限,或者它已过期或被吊销。类似于我们用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/',并且由于我们的应用需要能够与日历交互,用户必须使用Office 365帐户进行身份验证。像微软真实帐户一样的其他帐户将导致此错误。

质询

1 - 还有什么可能会导致这样的错误?

2 - 是否有办法限制azure oauth流程只允许真正的office 365登录?

回答

0

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

希望这会有所帮助。

+0

当用户没有无效凭证,当一个全新用户能够登录到他们的邮件时,我们看到这个错误 - 他们来和授权我们,我们知道他们有一个真正的office365订阅。 超级常见,并且找不到任何相关的东西。现在我们告诉人们:“对不起,有些微软账户给我们一个错误,微软不会告诉我们为什么,看起来你不能很好地使用我们的服务。” 在晚上哭了这个 –

相关问题