我編寫了自己的登錄應用程序以保護我的api,例如oauth-login-app示例。使用Apigee代理處理OAuth2身份驗證失敗
我已經實現了Web服務器流程,一切都很好。
我的問題是:我應該如何在第3步處理認證失敗?我如何告訴他的客戶端應用程序驗證失敗?用戶可以按取消按鈕,或拒絕許可或只輸入錯誤的細節。
我編寫了自己的登錄應用程序以保護我的api,例如oauth-login-app示例。使用Apigee代理處理OAuth2身份驗證失敗
我已經實現了Web服務器流程,一切都很好。
我的問題是:我應該如何在第3步處理認證失敗?我如何告訴他的客戶端應用程序驗證失敗?用戶可以按取消按鈕,或拒絕許可或只輸入錯誤的細節。
當您啓動的OAuth 2.0(舞蹈)與
/authorize
/login
頁面的用戶代理的土地(創建/你主持), 後重定向。redirect_uri
」提供 通過客戶端,並顯示錯誤代碼。How do I tell he client app that the authentication failed?
登錄應用程序會將控件重定向迴應用程序重定向URI - 在URL中將錯誤代碼/描述添加爲散列參數。在成功的情況下,URL附加了代碼或令牌。
您可以直接從您的登錄應用程序重定向,但我建議首先將重定向呼叫轉到Apigee代理,並讓Apigee Proxy將重定向發送迴應用程序。在成功和失敗的情況下。通過這種方式,您將獲得使用Apigee分析的好處,該分析有助於您瞭解有多少OAuth由於什麼原因而失敗等。
編輯: 您可以使用您爲成功流構建的同一個GenerateAuthorizationCode代理。登錄失敗或成功時,無論哪種情況,您都需要將該信息傳遞給此代理。通常,登錄應用程序和此代理應使用常見會話存儲共享此信息。您不能僅使用重定向參數傳遞此信息,因爲客戶端用戶代理可以更改該信息。當您重定向到GenerateAuthorizationCode重定向代理時,通過在URL中附加一個隨機會話ID來完成此操作。 GenerateAuthorizationCode代理可以使用該標識從會話存儲中查找登錄狀態。然後,您可以根據登錄是否成功發送錯誤重定向或適當的oauth代碼。會話存儲的簡單實現可以使用apigee網關中的分佈式緩存資源完成。登錄應用程序可以使用內部API放置/獲取會話。代理可以使用策略來檢索會話信息。
我有一個GenerateAuthorizationCode代理設置,併成功當我登錄的應用程序重定向到'/ OAuth的/ authorizationcode?CLIENT_ID =%S&RESPONSE_TYPE =代碼&app_enduser =%s' 當用戶登錄失敗,我應該使用相同的代理服務器?我如何傳回錯誤代碼?或者我應該創建一個完全不同的代理? –
感謝您的幫助! –
根據評論編輯了答案。 –