0

是否client_credentials交付式支持刷新令牌的情況?春季安全client_credentials grant_type - 支持刷新令牌

應該如何access_token期滿使用client_credentials補助類型時如何處理?

我有一個授權服務及擔保服務背後充當來自客戶端應用程序的所有請求的網關代理服務(Zuul與EnableOAuth2Sso)。

這裏是我的流程:接受來自客戶端應用程序的請求(REST API)

  • 代理服務通過張貼client_idclient_secretgrant_type調用授權服務API

    1. 代理服務(zuul)( client_credentials)並獲得access_token,refresh_token,並從響應中過期時間
    2. 代理服務根據zuul路由映射將原始請求路由到受保護服務。

    這種流動工作正常,但在ClientCredentialsAccessTokenProvider看代碼我注意到,「supportsRefresh的回報false和「refreshToken」方法返回null。這是否意味着當access_token到期時,從客戶端應用程序到代理服務(zuul)的任何後續請求都會失敗?

  • 回答

    2

    client_credentials的OAuth授予服務器的需求,機器對機器認證的,所以也沒有必要刷新令牌。

    至於結果,在春季安全的OAuth的ClientCredentialsAccessTokenProvidersupportsRefresh返回false和refreshToken方法返回null。

    事實上,你的授權服務器和資源服務器都在同一個地方(這意味着令牌生成相當便宜),相當多像我們的設置。我建議你可以設置訪問令牌的短期壽命(如10分鐘),並將它們視爲自動棄用,並在每次想要訪問受保護資源時獲取訪問令牌。

    +0

    感謝您的迴應。很少有澄清。 1)資源服務器和身份驗證服務器可能不在同一地點2)在我們的場景中,它不是獲取access_token的資源服務器。我們有一個網關服務(zuul),它負責從auth服務器獲取access_token,並將http頭中的相同內容中繼到資源服務器。我的問題是,我們的代理服務器應該總是爲每個請求獲得一個新的access_token,還是隻能在它過期時才刷新?我希望以後看到ClientCredentialsAccessTokenProvider類時,我發現它不受支持。 – rgv

    +0

    我想到另一種選擇是在我們的網關服務的實施,以檢查是否在上下文中過期的access_token,然後讓新使用的access_token客戶端憑據(CLIENT_ID和client_secret)邏輯(過濾器)。 – rgv

    +0

    @rgv,是的,您應該''AuthenticationFilter'做這些令牌相關的操作。 – chenrui