我希望我的Domino Servlet来得到一个身份验证的用户会话(I want my Domino

2019-07-19 15:27发布

这似乎是一个像一个非常基本的问题,在托管在Domino我要访问我已使用IBM Notes和Domino的非常精细的安全保护明智的Domino资源运行的Servlet。

我想这个Servlet能够读取并同时从调用Servlet的客户端(或xAgent)保持数据和阻止客户端直接写入数据写入的Domino。

我很高兴能够得到那个代表的应用程序的签名者的会话。 我可以通过调用Servlet的获取注册用户的会话?开放和登录和登录。这是不实际的。

我在这里看: 你怎么能在一个Java Bean从一个XPage称为使用SessionAsSigner? 其中马克Leusink( https://stackoverflow.com/users/1177870/mark-leusink )意味着使用EXTLIB的getCurrentSessionAsSigner的()可以使用。 我已经试过了,已经签署了一个用户ID在整个应用程序,它不返回会话。 答案似乎在于Servlet的无法得到一个FacesContext对象。

这感觉就像答案应该是显而易见的,但它不是我的。 有任何想法吗?

Answer 1:

FacesContextJSF的东西,并且可以从XAgent(=的XPage)一起使用。

在一个servlet,你可以这样做:

Session session = NotesFactory.createSession(null, "user", "password");

服务器ID通常没有密码,这样做将使用服务器ID:

Session session = NotesFactory.createSession();


Answer 2:

检查OpenNTF WebDAV的项目源。 它拥有所有你需要的代码



Answer 3:

已经有很多很好的答案,原来的问题的。 非常感谢。

我建议使用该解决方案移植到OSGi的插件代码中,我有。 看来,java代码/ NSF的范围内Servlet是受该放松的安全控制时相同的代码在OSGi上下文中运行。 代码:

try {
NotesThread.sinitThread();
Session s = NotesFactory.createSession("","<my username>","<my password>");
.....
session = null;
} catch (Exception e) {
} finally {
NotesThread.stermThread();
}

运行在NSF produc在OSGi方面很好,但内



Answer 4:

com.ibm.domino.osgi.core.context.ContextInfo.getUserSession()



Answer 5:

杰森 - 我想你基本上要你会得到运行的Web查询保存代理,如果你没有选择Run As选择,换句话说,作为代码的签名者Web用户相同的功能。

你可以尝试建立一个互联网网站规则,以允许您想使用的特定应用程序的路径基本身份验证 - 可能是值得使用该子域。

然后在Servlet中调用这个URL,同时设置基本授权参数(用户名和密码)。

事情是这样的。

URL url = new URL(URL_TO_CALL);
String authStr = "USERNAME:PASSWORD";
String authEncoded = Base64.encodeBytes(authStr.getBytes());
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoOutput(true);
connection.setRequestProperty("Authorization", "Basic " + authEncoded);
InputStream is = connection.getInputStream();


文章来源: I want my Domino Servlet to get an authenticated user session