我正在尝试将 CAS 身份验证集成到我们的 Web 服务中,并使用Jasig CAS 服务器(v. 4.2),它是基于 Spring 的 Web 应用程序。
不幸的是,Jasig CAS 服务器在成功登录后只能使用服务 ID 进行重定向。这是不可接受的,因为 CAS 服务器位于反向代理后面,我们不使用 DNS。因此,登录 URL 如下所示:
http://a.b.c.d/cas/login?service=http://x.x.x.x/context-path/auth-entry-point
在哪里
- abcd - 外部(代理)IP 地址
- xxxx - 内部(服务/CAS 客户端)IP 地址
我已阅读 Jasig 文档,但找不到混淆服务 URL 的方法。现在我正在尝试实现自定义逻辑。我想将重定向 url 作为单独的参数传递:
http://a.b.c.d/login?service=<serviceUID_like_YYY-YYY-YYY>&redirect=<base64_encoded_URL>
.. 并使用此参数而不是服务 ID 进行重定向。
根据文档 Jasig CAS 使用 Spring Webflow 来实现登录场景(login-webflow.xml)。这就是重定向引起的地方:
<end-state id="redirectView" view="externalRedirect:#{requestScope.response.url}"/>
由于我不熟悉 Spring Weblow,所以问题是:
如何接收“重定向” URL 参数、解码并将其用于重定向?
PS对不起我的英语不好,我希望它至少是可解析的:-)