【问题标题】:Select JDBCRealm dynamically动态选择 JDBCRealm
【发布时间】:2017-10-06 12:32:40
【问题描述】:

我在 Payara 服务器中使用不同的 JNDI 创建了多个领域。意味着我有多个具有相同结构的数据库(用户和组),并希望通过在运行时获取/设置域名来获得身份验证/授权。我不确定如何在运行时获得 JDBCRealm 名称,需要任何帮助。

我试图通过:

        Context iniCtx = new InitialContext();
        DataSource ddsa = (DataSource) iniCtx.lookup("java:app/multi2jndi");
        DatabaseMetaData mdd;

我不工作,因为它是用来查找资源的。

【问题讨论】:

  • 请查看此问题 (stackoverflow.com/questions/5104185/…) 并由 Nayan 回答。
  • @D00de 这是关于调用数据源,我的问题是关于在运行时获取域名。
  • 您的 Realm 在哪里配置,在 web.xml 文件中?
  • 我在 payara 中创建了 2 个领域。例如:tenant1Realm 和tenant2Realm。我的方法是在登录时检测tenantID,并在它的帮助下在登录方法之前调用特定领域(领域名称包含tenantID)。基本上我正在尝试使用声明性领域,但我只会在会话范围内调用所需的领域。
  • 第二种方法是在项目中而不是在 Payara 中定义领域,因为所有必需的参数都是相同的,只是租户的数据源会不同。但为此,我需要一些类来将我的数据源与我现在不知道的领域连接起来。 **是否可以在 web.xml 中有占位符,我可以在后端为特定会话解决它??

标签: jakarta-ee glassfish jdbcrealm payara


【解决方案1】:

经过两天的努力,我发现我们无法直接破解容器管理的安全/领域。一些我们必须如何编写自己的自定义安全模块或使用 JASPIC (JSR196) 以不同方式进行的一些方法。我将在 JASPIC 上走得更远。

【讨论】:

    猜你喜欢
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多