小编tsc*_*ein的帖子

Rails 3&devise_ldap_authenticatable:对Active Directory的授权?

我成功地使用devise和devise_ldap_authenticatable运行我的Rails 3应用程序以对本地Active Directory 进行身份验证.

现在,我想添加授权功能,以便只允许访问属于某些AD组的AD用户.

所以简单来说,我首先使用linux命令ldapsearch在AD中查找我自己的用户.结果包含了......

(...)
memberOf: CN=my,OU=foo,DC=bar,DC=role,DC=domain,DC=com
memberOf: CN=my,OU=foo,DC=bar2,DC=role,DC=domain,DC=com
memberOf: (...)
(...)
Run Code Online (Sandbox Code Playgroud)

好的,现在我决定,我想限制对成员的访问 CN=my,OU=foo,DC=bar,DC=role,DC=domain,DC=com.

所以,我改变了我的ldap.yml包含:

authorizations: &AUTHORIZATIONS
  group_base: ou=role,dc=domain,dc=com
  required_groups:
    - CN=my,OU=foo,DC=bar,DC=role,DC=domain,DC=com

development:
  (...)
  <<: *AUTHORIZATIONS
Run Code Online (Sandbox Code Playgroud)

另外改变了我的devise.rb来包含:

Devise.setup do |config|
  config.ldap_logger = true
  config.ldap_create_user = true
  config.ldap_update_password = false
  config.ldap_check_group_membership = true # <-- activated this line
  config.ldap_use_admin_to_bind = true
  #config.ldap_ad_group_check = true <-- don't know what this is good for
Run Code Online (Sandbox Code Playgroud)

现在,在尝试进行身份验证时,拒绝访问,这是我没想到的:

User CN=myuser,OU=org,DC=domain,DC=com is not in group: CN=my,OU=foo,DC=bar,DC=role,DC=domain,DC=com
Run Code Online (Sandbox Code Playgroud)

任何想法,如何使用devise_ldap_authenticatable完成对AD的授权?在授权方面,该模块的文档还不够全面.

authorization active-directory devise ruby-on-rails-3

13
推荐指数
2
解决办法
3956
查看次数

在一个Java应用程序中使用多个Oracle JDBC驱动程序?

我想通过JDBC连接到两个不同的Oracle数据库(一个8.0.5.0.0和一个12c).我有两个JDBC驱动程序,可以通过简单的"hello world"应用程序单独成功连接到相应的DB.下面,我将它们放在一个Java应用程序中,遗憾的是它不再起作用(两个驱动程序都被加载).

我已经阅读过这篇文章:处理来自SAME VENDOR的多个JDBC驱动程序.提到的选项1可能有办法,但似乎有一个主要问题:

它似乎OracleDataSource在旧版本8驱动程序中尚不存在,并且仅在更高版本中引入(在12c版本驱动程序中存在).

关于如何使用一个Java应用程序和两个JDBC驱动程序连接这两个Oracle数据库的任何提示?

import java.sql.*;

class db {
    public static void main (String args []) throws SQLException {

        // Oracle 8 connection
        DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
        Connection c1 = DriverManager.getConnection(
                "jdbc:oracle:thin:@some-oracle-8-server:port:sid",
                "my-user",
                "my-password");
        Statement s1 = c1.createStatement ();
        ResultSet r1 = s1.executeQuery ("SELECT banner FROM V$VERSION WHERE banner LIKE 'Oracle%'");
        while (r1.next ()) {
            System.out.println(r1.getString (1));
        }
        c1.close();

        // Oracle 12 connection
        Connection c2 = DriverManager.getConnection(
                "jdbc:oracle:thin:@some-oracle-12-server:port:sid",
                "my-user",
                "my-password");
        Statement s2 = c2.createStatement ();
        ResultSet …
Run Code Online (Sandbox Code Playgroud)

java oracle jdbc

6
推荐指数
1
解决办法
6487
查看次数

SLES 12:通过/etc/login.defs选项设置新用户的默认组USERGROUPS_ENAB不起作用?

我正在设置一个新的SLES 12服务器,并希望为新用户设置默认组,以便这不是命名users,而是<username>(p.ex.用户foo将被分配给该组foo).

我发现,选择USERGROUPS_ENAB/etc/login.defs认为做这个工作,但之后,我把它改成USERGROUPS_ENAB yes,并试图通过创建一个新的用户yast,这样的新用户将-根据yast-仍然被分配到users.

如何通过yast?完成所需的行为?或者我会错过什么?

default suse sles

5
推荐指数
1
解决办法
285
查看次数

"不喜欢x"和"喜欢x"不总结?

我不太明白......

有人可以给我一个提示,说明为什么查询B + C的结果不会累加到A?

我首先想到的是,由于拼写错误,下划线(应该是10)在B和C之间不匹配,但在复制/粘贴后我有点无奈.A的结果高于B + C的总和.

在语句B和C中是否存在某种我不知道的隐含的不同?

-- statement A
select count(*) from mytable;

-- statement B
select count(*) from mytable where mycolumn like '__________';

-- statement C
select count(*) from mytable where mycolumn not like '__________';
Run Code Online (Sandbox Code Playgroud)

sql oracle sql-like oracle12c

1
推荐指数
1
解决办法
205
查看次数