簡體   English   中英

訪問令牌響應:tokenType 不能是 null

[英]Access Token Response: tokenType cannot be null

我正在升級我的服務並使用 oAuth2 實現 web 客戶端,我得到的異常是“tokenType 不能為空”,請您幫我解決這個問題。

異常:org.springframework.security.oauth2.core.OAuth2AuthorizationException:[invalid_token_response] 嘗試檢索 OAuth 2.0 訪問令牌響應時發生錯誤:提取類型 [class org.springframework.security.oauth2.core.endpoint .OAuth2AccessTokenResponse] 和內容類型 [application/json]; 嵌套異常是 org.springframework.http.converter.HttpMessageNotReadableException:讀取 OAuth 2.0 訪問令牌時發生錯誤響應:tokenType 不能為 Z37A6259CC0C1DAE299A7866 嵌套異常是 java.lang.IllegalArgumentException:tokenType 不能是 null

請查看https://github.com/spring-projects/spring-security/issues/5983#issuecomment-430620308

這是眾所周知的問題,因為規范要求在訪問令牌訪問 uri 時在對客戶端的響應中存在令牌類型(在我們的例子中為 BEARER),Spring 安全 oauth 在不存在此的情況下不會影響默認值參數 tokentype,您可以在上面的鏈接中解決。

OAuth 規范指出: https://tools.ietf.org/html/rfc6749#section-5.1

5.1。 成功響應

授權服務器發出訪問令牌和可選刷新令牌,並通過將以下參數添加到具有 200(OK)狀態代碼的 HTTP 響應的實體主體來構造響應:

需要訪問令牌。 授權服務器頒發的訪問令牌。

token_type 必需的。 如第 7.1 節所述發行的令牌類型。 值不區分大小寫。

expires_in 推薦。 訪問令牌的生命周期(以秒為單位)。 例如,值“3600”表示訪問令牌將在響應生成后一小時內過期。 如果省略,授權服務器應該通過其他方式提供過期時間或記錄默認值。

最終解決了這個問題,客戶端缺少令牌 json 響應中的一個字段,即令牌類型。 實際上 tokenType 也應該包含在令牌響應中,在我的情況下 tokenType 是不記名的。

{“access_token”:“************”,“token_type”:“承載”,“expires_in”:1800,“范圍”:“讀取”}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM