差異處
這裏顯示兩個版本的差異處。
Both sides previous revision 前次修改 下次修改 | 前次修改 | ||
java:web:restapi:x-http-method-override_filter [2016/02/26 22:18] tony |
java:web:restapi:x-http-method-override_filter [2023/06/25 09:48] (目前版本) |
||
---|---|---|---|
行 13: | 行 13: | ||
Sprint Security提供了DigestAuthentationFilter負責處理Digest認證。在使用者發出第一次請求後,Spring Security在察覺未經過驗證的情況下,會透過AuthenticationEntryPoint送出請求認證資訊。而為了在認證失敗時,能夠輸出xml或json格式的錯誤訊息(可參考上方),我們extend了DigestAuthenticationEntryPoint: | Sprint Security提供了DigestAuthentationFilter負責處理Digest認證。在使用者發出第一次請求後,Spring Security在察覺未經過驗證的情況下,會透過AuthenticationEntryPoint送出請求認證資訊。而為了在認證失敗時,能夠輸出xml或json格式的錯誤訊息(可參考上方),我們extend了DigestAuthenticationEntryPoint: | ||
<code java> | <code java> | ||
- | public class JsonDigestAuthenticationEntryPoint extends DigestAuthenticationEntryPoint { | + | public class CustomziedDigestAuthenticationEntryPoint extends DigestAuthenticationEntryPoint { |
private static final Log logger = LogFactory.getLog(JsonDigestAuthenticationEntryPoint.class); | private static final Log logger = LogFactory.getLog(JsonDigestAuthenticationEntryPoint.class); | ||
行 57: | 行 57: | ||
- Server的DigestAuthenticationFilter發現response不相同。 | - Server的DigestAuthenticationFilter發現response不相同。 | ||
- Server回應錯誤訊息給Client。 | - Server回應錯誤訊息給Client。 | ||
- | 這問題就在於: Client使用POST當method去計算HA2,而Server則用DELETE。 | + | 這問題就在於: Client使用POST當method去計算HA2;而Server由於經過Request method的取代,會用DELETE去計算HA2。 |
===== Solution ===== | ===== Solution ===== | ||
那調整一下順序不就好了嗎? 的確,在我將RestHeaderFilter設定在Security相關Filter後,請求就可以正常處理了。但其實我們的RestHeaderFilter,還身兼將Rest API版本資訊塞到Header的責任。因此最後調整的順序為: | 那調整一下順序不就好了嗎? 的確,在我將RestHeaderFilter設定在Security相關Filter後,請求就可以正常處理了。但其實我們的RestHeaderFilter,還身兼將Rest API版本資訊塞到Header的責任。因此最後調整的順序為: | ||
行 95: | 行 95: | ||
} | } | ||
</code> | </code> | ||
+ | ===== Note ===== | ||
+ | 如果有使用PostMan,可以仔細看看選擇不同的HTTP method,是否會產生不同的digest response。 | ||
===== ===== | ===== ===== | ||
---- | ---- | ||
\\ | \\ | ||
~~DISQUS~~ | ~~DISQUS~~ |