如何让 Quarkus 使用 Apereo CAS 或 SAML2 认证
How to make Quarkus use Apereo CAS or SAML2 authentication
我是一名计算机科学专业的学生,在过去的一年里,我在几个项目中使用了 Quarkus。
我最近接到了一个新项目,我必须在其中创建休息 API。因为我必须在短时间内做很多事情,所以我使用 Quarkus 通过 RESTEasy 轻松完成我的 Web 服务的工作。
但是这个 API 必须使用带有 CAS 或 SAML2 协议的 Apereo 来验证用户。
此外,我没有使用 Java 安全插件的经验。
我还搜索了如何通过使用 keycloak、Apereo Jboss client, Apero Spring boot client 或通过与 Quarkus 一起提供服务(如 Tomcat 来完成身份验证工作)来处理该问题。但我不知道哪一个最好,甚至不知道哪一个真正有效。
你有这方面的经验吗?
或者我可以使用什么来让我的 Quarkus API 与 Apereo 一起工作?
非常感谢您的宝贵时间和帮助,
此致,
托马斯
抱歉来晚了,但我实际上做了一个 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 登录 window,然后将您重定向回来。你不能通过 postman 或 curl 使用这个 API。此外,API 不会存储有关用户的任何会话,因此每次都会发生这种重定向舞蹈。这不是 API 的保护方式。网页或网络应用程序是,但不是 API。
我是一名计算机科学专业的学生,在过去的一年里,我在几个项目中使用了 Quarkus。 我最近接到了一个新项目,我必须在其中创建休息 API。因为我必须在短时间内做很多事情,所以我使用 Quarkus 通过 RESTEasy 轻松完成我的 Web 服务的工作。
但是这个 API 必须使用带有 CAS 或 SAML2 协议的 Apereo 来验证用户。 此外,我没有使用 Java 安全插件的经验。
我还搜索了如何通过使用 keycloak、Apereo Jboss client, Apero Spring boot client 或通过与 Quarkus 一起提供服务(如 Tomcat 来完成身份验证工作)来处理该问题。但我不知道哪一个最好,甚至不知道哪一个真正有效。
你有这方面的经验吗? 或者我可以使用什么来让我的 Quarkus API 与 Apereo 一起工作?
非常感谢您的宝贵时间和帮助,
此致,
托马斯
抱歉来晚了,但我实际上做了一个 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 登录 window,然后将您重定向回来。你不能通过 postman 或 curl 使用这个 API。此外,API 不会存储有关用户的任何会话,因此每次都会发生这种重定向舞蹈。这不是 API 的保护方式。网页或网络应用程序是,但不是 API。