服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java对domino objects的访问 (5)

访问控制


    授予用户的对客户机上 domino 服务器或者 notes/domino 软件的访问级别取决于 createsession 如何进行编码以及服务器或者客户机的设置。访问控制是通过以下两种方式之一实现的:


  domino directory 中的名称和相关 internet 密码


  这种方式用于本地或者远程访问。对于本地访问,运行代码的计算机必须配置为 domino 服务器。


  当前 notes id(由 notes.ini 中的 keyfilename 变量指定)


  这种方式仅用于本地调用。运行代码的计算机可以包含 notes 客户机或者 domino 服务器。


通过 domino directory 访问


    对于通过 domino directory 访问,代码将确定用户是以 anonymous 匿名访问服务器,还是作为 domino directory 中列出的用户来访问服务器。在 notesfactory 调用中,如果仅指定了主机名称,或指定了空字符串作为用户名和密码,那么将以 anonymous 访问服务器。例如:


  session s = notesfactory.createsession("myhost.east.acme.com:63148");


    或者


    session s = notesfactory.createsession("myhost.east.acme.com:63148", "", "");

要以 domino 用户访问服务器,需要指定用户名和 internet 密码作为参数 2 和参数 3。用户名和密码必须与服务器上 domino directory 中的 person 文档匹配,例如:


  session s = notesfactory.createsession("myhost.east.acme.com:63148", "jane smith/east/acme", "tops3cr3t");


    如果对运行代码的计算机上安装的 domino 服务器进行本地访问,需要指定主机名称为空字符串,例如:


  session s = notesfactory.createsession("", "jane smith/east/acme", "tops3cr3t")


    对于 anonymous 访问,需要指定用户名和密码为空字符串:


  session s = notesfactory.createsession("", "", "")


    对于本地访问,则不必运行服务器。


    domino directory 的 server 文档中的设置控制着是 anonymous 访问还是命名访问。在 server 文档中,转至 ports 选项卡、internet ports 选项卡和 diiop 选项卡。下表指定了设置:

 

客户机代码 authentication options
createsession(host, "", "") anonymous 必须为 yes,以便访问服务器
createsession(host, name, password) name & password 必须为 yes,以便访问服务器

 


    对于 name & password 验证,名称必须是服务器上 domino directory 中 person 文档中的用户名,密码必须是同一 person 文档中的 internet 密码。可以进一步限制访问,方法是在 domino directory 的 server 文档中,在 ports 选项卡和 internet ports 选项卡下,将 enforce server access settings 字段设为 yes,以便使用 diiop 端口。然后在 security 选项卡下的 server access 选项卡中指定希望的访问。

 

    下表列出了 diiop 选项卡中的字段:

 

字段 备注
(tcp/ip) name and password diiop 验证需要名称和密码
(tcp/ip) anonymous diiop 验证不需要名称和密码
(tcp/ip) enforce server access settings diiop 使用 security 选项卡下的 server access 设置
(ssl) name and password diiop ssl 验证需要名称和密码
(ssl) anonymous diiop ssl 验证不需要名称和密码

 


    下列 notes.ini 设置会影响通过远程或本地 java 类获得的 internet 会话的安全性

 

notes.ini 设置 描述
noambiguouswebnames 如果 diiop 登录用户名在 $users 视图中有多个匹配名称,noambiguouswebnames=1 会导致验证失败
webnameauthentic webnameauthentic=1 会使 diiop 登录名称被视为用户的识别名
nabweblookupview nabweblookupview="xxx" 会使 domino directory 中的“xxx”用来搜索 diiop 登录名称

 


    同时注意,数据库 acl“maximum internet name and password access”设置会影响通过远程或者本地 java 类获得的 internet 会话的安全性,因为 diiop 登录用户被限制为这一访问级别。

 

    服务器大约半小时刷新一次安全性选项的缓存。控制台命令“tell diiop refresh”可以强制立即刷新。

 

    通过 notes id 访问,对于通过当前 notes id 的访问,无需指定参数:


  session s = notesfactory.createsession()


    在这种情况下,当需要进行身份验证时(例如,访问数据库),会显示对话框,并要求输入 notes id 口令。所选择的 notes id 是在搜索路径中第一个 notes.ini 文件的 keyfilename 变量中指定的。用户必须输入正确的密码或者单击 cancel 以继续后续操作。

 

    除了不指定参数外,也可以指定第二个参数为 null(转换为 string),第三个参数为 notes id 的密码:


  session s = notesfactory.createsession((string)null, (string)null, "tops3cr3t")

 

    在服务器上,上述方法会根据 readers 字段限制访问。要进行完全的访问,可以用以下方法:


  session s = notesfactory.createsessionwithfullaccess()


    或者


  session s = notesfactory.createsessionwithfullaccess("tops3cr3t")

扫描关注微信公众号