当前位置: 首页 > 知识库问答 >
问题:

CAS数据库身份验证不工作

石超
2023-03-14

继续我先前的问题。我正在研究CAS 5,以便根据需要进行修改。在CAS教程的帮助下,我现在已经完成了自定义身份验证。现在,我向pom添加了以下依赖项。xml,通过以下链接连接到数据库。

<dependency>
    <groupId>org.apereo.cas</groupId>
    <artifactId>cas-server-support-jdbc</artifactId>
    <version>${cas.version}</version>
</dependency>

并在应用程序中添加了数据库身份验证属性。属性

cas.authn.jdbc.query[0].sql=some query
cas.authn.jdbc.query[0].url=jdbc:postgresql://127.0.0.1/dbcas
cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.PostgreSQLDialect
cas.authn.jdbc.query[0].user=readonly
cas.authn.jdbc.query[0].password=readonly
cas.authn.jdbc.query[0].ddlAuto=none
cas.authn.jdbc.query[0].driverClass=org.postgresql.Driver

但这不起作用意味着

类型org.apereo.cas.configuration.model.support.jdbc.QueryJdbcAuthentiationProperties没有属性url

我是不是遗漏了什么。任何人都可以在这方面帮助我。

更新:

我已经检查了QueryJdbcAuthenticationProperties的源代码

@RequiredProperty
private String sql;

和抽象属性

private String dialect;
private String ddlAuto;
@RequiredProperty
private String driverClass;
@RequiredProperty
private String url;
@RequiredProperty
private String user;
@RequiredProperty
private String password;

我在cas-server-core-api-configuration-model-5.3.2中找到了相同的两个类。jar文件,这两个文件在任何其他包和jar文件中都找不到。

这里有什么问题。我无法识别它。

如何知道这些属性(cas.authn.jdbc.query)是在哪里定义的?

我认为该对象是在定义这些数据库属性时创建的w.r.t子类queryjdbauthenticationproperties。

共有2个答案

秦建元
2023-03-14

您的属性设置正确。但是CAS 5. x还需要某些数据库的驱动程序(并不总是)。如果您可以在pom中包含以下内容作为依赖项,它应该提供必要的驱动程序,这些驱动程序在postgres驱动程序支持中指定

更新pom以包括:

<dependency>
     <groupId>org.apereo.cas</groupId>
     <artifactId>cas-server-support-jdbc-drivers</artifactId>
     <version>${cas.version}</version>
</dependency>
慕兴平
2023-03-14

当您查看您描述的类时,即。e.AbstractJpaPropertiesQueryJdbcAuthentiationProperties,您将在它们的开头看到类似这样的内容:

// ...
import lombok.Getter;
import lombok.Setter;

// ...
@Getter
@Setter
public abstract class AbstractJpaProperties implements Serializable {

    // ...
    @RequiredProperty
    private String url = "jdbc:hsqldb:mem:cas-hsql-database";

字段没有getter和setter。这意味着Lombok负责在编译时生成它们。如果您直接从cas-server-core-api-configuration-model-5.3.2打开该类。jar,IDE应该在类大纲中显示getter和setter(仅在已编译的类中)。

因此,也许您尝试自己构建这些类(或整个CAS?),而无需在构建路径中使用Lombok库?因此,您会得到错误:

类型org.apereo.cas.configuration.model.support.jdbc.QueryJdbcAuthentiationProperties没有属性url

如果是这样的话,我建议您改为使用CAS WAR覆盖安装—一般来说,使用CAS更容易。如果您仍然需要接触这些类,那么需要像我上面提到的那样设置Lombok。

最后,正如Karan所写,您可能还需要在PostgreSQL驱动程序上添加一个适当的依赖项,以便在应用程序进一步执行时不会得到NoClassDefFoundError或类似的结果。

 类似资料:
  • 所以在我的安装中似乎缺少了几个类。无论如何,我尝试在我的po.xml文件中包含所有需要的依赖项。 我的pom.xml文件: 我的QueryAndenCodeDatabaseAuthenticationHandler.java文件(尚未修改!): 最后是我的AbstractJDBCUserNamePasswordAuthenticationHandler.java(也未修改):

  • 我正在尝试制作一个适配器,它将显示给listview实时数据库内容。 带适配器返回null得身份验证: 类: 请求布局:

  • 在我在share/WEB-INF/web.xml中发表评论之后: 并补充道: singleSignouthttpSessionListener 然后,我启动了tomcat_server,alfresco_tomcat。 我传递链接:localhost:8080/share(http),因为($alfresco_tomcat/webapps/share/web-inf/web.xml)共享将我重定向

  • 我已经开始开发一个由Google的Firebase服务提供支持的应用程序。我很好奇数据传输在Auth和数据库服务中是否安全。如果没有,我是否可以阅读任何材料来源以实现加密? 非常感谢。

  • 在android studio 3.1.3中,用于链接firebase身份验证的“implementation'com.google.firebase:firebase-auth:11.6.0'”和用于链接firebase数据库的“implementation'com.google.firebase:firebase-database:11.8.0'”是app level Gradle中提供的默认

  • 我已经从这个github集成了RubyCAS客户端https://github.com/rubycas/rubycas-client它正在工作并启动我的CAS服务器进行身份验证。。。但我遇到的问题是在我的应用程序控制器上插入before\u filter CASClient::Frameworks::Rails::filter之后。rb,我的模型不工作,我无法从模型中添加/编辑/删除内容。 我的R