我成功地使用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的授权?在授权方面,该模块的文档还不够全面.
我想通过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) 我正在设置一个新的SLES 12服务器,并希望为新用户设置默认组,以便这不是命名users,而是<username>(p.ex.用户foo将被分配给该组foo).
我发现,选择USERGROUPS_ENAB在/etc/login.defs被认为做这个工作,但之后,我把它改成USERGROUPS_ENAB yes,并试图通过创建一个新的用户yast,这样的新用户将-根据yast-仍然被分配到users.
如何通过yast?完成所需的行为?或者我会错过什么?
我不太明白......
有人可以给我一个提示,说明为什么查询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)