2017-06-30 33 views
1

我在SPA客戶端使用adal.js登錄並獲取我的Web服務的訪問令牌。我們正在使用新的權限更新我們的應用程序註冊,這將要求用戶再次同意。應該提示哪些AAD錯誤代碼表示同意?

我想知道AAD的哪些錯誤代碼表示需要同意,而不是採取其他錯誤處理措施?

令我驚訝的是,我無法向Google列出完整的參考文獻,列出AAD可能返回的所有錯誤代碼。這些信息是否被公開記錄?我指的是模式的錯誤代碼,AADSTSxxxxx(即AADSTS65001等),可能從oauth2/authorize端點返回。

回答

2

AADSTS65001是表示最終用戶需要再次進行同意的主要同意錯誤。我建議不要尋找特定的AADSTSxxxxxx錯誤,並讓您的應用程序分支遇到該錯誤。有時候這些變化會在未來出現新的錯誤,表明有類似的「需要同意」的信息。

如果您正在構建單租戶應用程序,那麼當您嚮應用程序進行所需資源更新時,最好的選擇是執行管理員同意。您可以通過在Azure門戶中單擊Grant Permissions或發送帶有prompt=admin_consent的驗證請求並使用管理員帳戶登錄來完成此操作。

對於多租戶,根據應用程序有幾個選項。一種選擇是建立管理員同意體驗,以獲得管理員可以進入的更新,點擊啓動管理員同意請求的按鈕,然後讓管理員登錄。

adal.js的一個新功能我相信會使開發過程變得容易一些,就是新的交互式獲取令牌調用。這將允許您在acquireToken調用中指定一個可顯示UI的資源,並在需要時詢問是否同意。一旦可用,您的應用可以嘗試無聲的acquireToken請求,並在嘗試失敗時嘗試此交互式版本。注意這個版本Github

+0

我們的應用程序是單租戶,但是,我的團隊沒有管理員權限爲所有人授予權限。爲了清楚你的第一段,我相信你推薦檢測'AADSTS65001',但沒有其他具體的錯誤代碼?但是,您也聲明錯誤代碼可能會更改。那麼保持'AADSTS65001'改變意義的是什麼?如果你的陳述是真的,似乎沒有錯誤代碼可以被信任。你能澄清嗎?謝謝! –

+0

對不起,如果我不清楚,我不建議抓住任何AADSTS錯誤代碼和分支邏輯。我試圖描述這個特定代碼的含義以便大致瞭解。 –

+0

如果應用程序是由非管理員創建的,那麼我會再添加一點細節,那麼您將在'login()'調用中獲得所有必需資源的同意。如果管理員註冊了該應用程序,那麼情況會有點棘手,但不能做到管理員同意。 –

相關問題