Active directory XPages检索当前登录的Active Directory用户

Active directory XPages检索当前登录的Active Directory用户,active-directory,xpages,Active Directory,Xpages,有人能告诉我如何检索当前登录的Active Directory用户吗 我一直在研究在JSF中通常是如何做到这一点的: javax.faces.context.FacesContext.getCurrentInstance().getExternalContext().getRequest().getUserPrincipal() 不幸的是,这似乎总是检索domino用户。没有“Active Directory用户”这样的东西。当您使用Domino服务器进行身份验证时,无论您针对什么对用户进行身

有人能告诉我如何检索当前登录的Active Directory用户吗

我一直在研究在JSF中通常是如何做到这一点的:

javax.faces.context.FacesContext.getCurrentInstance().getExternalContext().getRequest().getUserPrincipal()
不幸的是,这似乎总是检索domino用户。

没有“Active Directory用户”这样的东西。当您使用Domino服务器进行身份验证时,无论您针对什么对用户进行身份验证,都会得到一个“Domino用户”。我怀疑AD在身份验证时提供了一个“Domino用户名”,根据您的配置,该用户名可能与AD凭据不同。 因此,您的操作过程将是在AD中进行LDAP查找,以获得匹配的AD用户。

没有“Active Directory用户”这样的东西。当您使用Domino服务器进行身份验证时,无论您针对什么对用户进行身份验证,都会得到一个“Domino用户”。我怀疑AD在身份验证时提供了一个“Domino用户名”,根据您的配置,该用户名可能与AD凭据不同。
因此,您的操作过程将是在AD中进行LDAP查找,以获取匹配的AD用户。

如果您使用Domino建议的LDAP DiscriminatedName属性,您可能可以使用以下公式获取LDAP身份验证的用户名:

@If(
 @NameLookup([NoUpdate]:[NoSearching]; @UserName ;"Fullname")!=""; @Name([CN];@UserName);
 @NameLookup([NoUpdate]:[TrustedOnly]; @UserName; "cn")=@Name([CN];@UserName);  @NameLookup( [NoUpdate]:[TrustedOnly]; @UserName ;"displayName");
 @UserName );

但在Xpages中,我认为您需要使用Java进行LDAP查找。

如果您使用Domino建议的LDAP DiscriminatedName属性,您可能可以使用以下公式获得LDAP身份验证的用户名:

@If(
 @NameLookup([NoUpdate]:[NoSearching]; @UserName ;"Fullname")!=""; @Name([CN];@UserName);
 @NameLookup([NoUpdate]:[TrustedOnly]; @UserName; "cn")=@Name([CN];@UserName);  @NameLookup( [NoUpdate]:[TrustedOnly]; @UserName ;"displayName");
 @UserName );

但在Xpages中,我认为您需要使用Java进行LDAP查找。

您能再描述一下您的环境吗?您使用SPENGO进行身份验证吗?@Username不起作用吗?SPENGO是一个有害生物。请看一下Puakma SSO:您能再描述一下您的环境吗?您使用SPENGO进行身份验证吗?@Username不起作用吗?SPENGO是一个有害生物。相反,请看一下普阿克马·索索:让我解释一下研究这个问题的原因。目前,我们的用户可能有notes帐户,但没有active directory,或者个人文档未链接到AD;因此,他们可以访问数据库,但无法使用身份验证。这将导致HTTP 403禁止的错误,而不是要求他们手动登录。所以我一直想做的是让当前登录的AD用户手动在DominoNAB中查找该用户,并使用XSnippets上Serdar Basegmez的代码将该用户登录到该帐户。啊。。。这听起来很像一个基础设施的代码带援助。他们从不工作。应用服务器(无论是Domino、WAS、JBoss、Tomcat还是其他)的全部要点都是抽象。因此,appServer会让您登录,并且应用程序只允许处理该标识。那么您的用户已登录(@UserName不返回“匿名”),但在ACL上失败了?短期修复是改变ACL,正确的做法是整理广告链接(TDI)。不要试图用代码修复基础结构。但如果必须这样做的话:LDAP是一条出路。让我解释一下研究这个问题的原因。目前,我们的用户可能有notes帐户,但没有active directory,或者个人文档未链接到AD;因此,他们可以访问数据库,但无法使用身份验证。这将导致HTTP 403禁止的错误,而不是要求他们手动登录。所以我一直想做的是让当前登录的AD用户手动在DominoNAB中查找该用户,并使用XSnippets上Serdar Basegmez的代码将该用户登录到该帐户。啊。。。这听起来很像一个基础设施的代码带援助。他们从不工作。应用服务器(无论是Domino、WAS、JBoss、Tomcat还是其他)的全部要点都是抽象。因此,appServer会让您登录,并且应用程序只允许处理该标识。那么您的用户已登录(@UserName不返回“匿名”),但在ACL上失败了?短期修复是改变ACL,正确的做法是整理广告链接(TDI)。不要试图用代码修复基础结构。但如果必须这样做的话:LDAP是一条路要走。