2015-07-21 117 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訂閱。 超級常見,並且找不到任何相關的東西。現在我們告訴人們:「對不起,有些微軟賬戶給我們一個錯誤,微軟不會告訴我們爲什麼,看起來你不能很好地使用我們的服務。」 在晚上哭了這個 –

相關問題