因此,我有一臺配置爲OpenID provider的WAS Liberty服務器。然後我有一個使用REST Api端點的Angular應用程序。 當我第一次打開應用程序或在令牌過期後打開應用程序時,一切正常,WAS將我重定向到OpenID提供程序,然後定義由OpenID定義的流,並支持openidConnectClient-1.0實現。無法理解如何使用OpenID協議使用openidConnectClient-1.0功能和使用REST API端點的Angular應用程序
但我該如何關心以下用例:應用程序打開時令牌已過期,並且用戶在不重新加載應用程序的情況下發出GET或POST請求?現在WAS也執行重定向,所以我實際上無法區分常規響應和重定向(兩者均返回狀態200)。
我認爲唯一的解決方案是對Websphere表示不要爲某些端點執行重定向,而是要返回401/403錯誤。所以我可以在客戶端監控響應代碼並執行相應的操作。是否有可能實現?也許還有另一個我不知道的解決方案?
更新:我已經寫了這個之後,我想過用Authentication Filters,即定義是這樣的:
<authFilter id="testFilter">
<webApp id="simple" matchType="contains" name="simple"/>
<requestUrl id="excludeUrl1" matchType="notContain" urlPattern="/basic"/>
<requestUrl id="excludeUrl1" matchType="notContain" urlPattern="/api"/>
</authFilter>
但我立刻看到這種方法有兩個缺點:
- 在兩個不同的地方維護應用邏輯,
server.xml
和應用本身。它會使應用程序的維護非常繁瑣。 - 由於Authentication Filters的性質,它會回退到另一個
registry
執行登錄。這可能是一個安全缺陷。
更新2:從上面解決方案不起作用。當服務器返回401
錯誤與www-authenticate
標題一起時,瀏覽器會顯示基本身份驗證彈出窗口,請參閱下面的建議解決方案。