1

我是一名计算机科学专业的学生,​​在过去的一年中,我在多个项目中使用了 Quarkus。我最近收到了一个新项目,我必须在其中创建一个休息 API。因为我必须在短时间内做很多事情,所以我使用 Quarkus 轻松地使用 RESTEasy 为我的 Web 服务完成这项工作。

但是这个 API 必须使用 Apereo 和 CAS 或 SAML2 协议来对用户进行身份验证。此外,我没有使用 Java 安全插件的经验。

我还搜索了如何通过使用 keycloak、Apereo Jboss 客户端、 Apero Spring 引导客户端或通过提供与 Quarkus 一起执行身份验证工作的服务来处理这个问题。但我不知道哪一个会是最好的,甚至不知道哪一个会真正起作用。

你有这方面的经验吗?或者我可以用什么来让我的 Quarkus API 与 Apereo 一起工作?

非常感谢您的时间和帮助,

最好的祝福,

托马斯

4

1 回答 1

0

很抱歉迟到了,但我实际上做了一个 quarkus - apareo cas 整合。基本上我添加了 quarkus-undertow 扩展,以便能够使用 src/main/resources/META-INF/web.xml。我还使用 org.jasig.cas.client:cas-client-core:3.6.1 来拥有 cas 过滤器。我的 web.xml 包含这样的内容:

<context-param>
    <param-name>serverName</param-name>
    <param-value>${cas.redirect.url}</param-value>
</context-param>

<filter>
    <filter-name>CAS Authentication Filter</filter-name>
    <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
    <init-param>
        <param-name>casServerLoginUrl</param-name>
        <param-value>${cas.login.url}</param-value>
    </init-param>
    <init-param>
        <param-name>ignorePattern</param-name>
        <param-value>/proxy/</param-value>
    </init-param>
    <init-param>
        <param-name>ignoreUrlPatternType</param-name>
        <param-value>CONTAINS</param-value>
    </init-param>
    <async-supported>true</async-supported>
</filter>

<filter>
    <filter-name>CAS Validation Filter</filter-name>
    <filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
    <init-param>
        <param-name>casServerUrlPrefix</param-name>
        <param-value>${cas.base.url}</param-value>
    </init-param>
    <async-supported>true</async-supported>
</filter>

<filter>
    <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
    <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
    <async-supported>true</async-supported>
</filter>

<filter-mapping>
    <filter-name>CAS Authentication Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<filter-mapping>
    <filter-name>CAS Validation Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<filter-mapping>
    <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

Saml 集成类似,只需使用 SAML 过滤器。有关配置选项的更多信息,请参阅java-cas-client

题外话,为什么需要通过 CAS 对 API 进行身份验证?它会将您重定向到该 CAS 登录窗口,然后将您重定向回来。您不能通过邮递员或 curl 使用此 API。此外,API 不存储有关用户的任何会话,因此每次都会发生这种重定向舞蹈。这不是保护 API 的方式。网页或网络应用程序是的,但不是 API。

于 2021-07-01T08:20:35.340 回答