这似乎是一个像一个非常基本的问题,在托管在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对象。
这感觉就像答案应该是显而易见的,但它不是我的。 有任何想法吗?
FacesContext
是JSF的东西,并且可以从XAgent(=的XPage)一起使用。
在一个servlet,你可以这样做:
Session session = NotesFactory.createSession(null, "user", "password");
服务器ID通常没有密码,这样做将使用服务器ID:
Session session = NotesFactory.createSession();
检查OpenNTF WebDAV的项目源。 它拥有所有你需要的代码
已经有很多很好的答案,原来的问题的。 非常感谢。
我建议使用该解决方案移植到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方面很好,但内
com.ibm.domino.osgi.core.context.ContextInfo.getUserSession()
杰森 - 我想你基本上要你会得到运行的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();