因此,我有一台配置为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
标题一起时,浏览器会显示基本身份验证弹出窗口,请参阅下面的建议解决方案。