skt
1
インデックス作成時に取得される権限情報について質問です。
環境は以下になります。
・Fess 14.15.0 + OpenSearch 2.15.0
・WindowsOSでZIP版にて環境構築
smbのファイルクロールでインデックス作成後に、role情報を確認すると以下の様にグループ名などが取得されている事が確認出来ます。
2Domain Admins
1Everyone
2d1 ここが問題点
1Administrator
Rguest
これに対し、ActiveDirectryのグループ設定は以下となっています。

インデックス作成時は、②のWindows2000より前の名前が取得されている事が分かります。
これは仕様なのでしょうか、①の名前を取得する様に変更する方法はあるでしょうか。
FessのLDAPでAD連携設定を行い、ADユーザーでログイン出来る様にしたところ、ユーザーの権限は以下の様に取得されます。
action:LOGIN user:ad_user permissions:2D-01|1ad_user ip:
この様に、ログインユーザーの権限は①の名前が取得され、インデックスでは②の名前が取得される為、グループによるフィルターが意味をなさないです。
インデックス作成時の取得方法を変更するか、ユーザー権限の取得方法を変更するかどちらかの対応が必要になるのですが、それは可能でしょうか。
また、これらを処理しているソースコードがどの辺りか教えていただければありがたいです。
SmbClientがACL情報を取得していますが、jcifsがd1のグループ名を返してきているのだと思います。D-01を取得できるのかは、デバッグログとかを見て、値が返ってきているのかを確認しないとわからないです。
ユーザーの方に付与するのであれば、LdapManagerあたりで対象箇所から値を引っ張ってきて追加するとかになると思います。
skt
3
回答ありがとうございます。
いずれにしろ、ソースコードの変更対応が必要になるのですね。
デバッグログ、ソースコードを確認して検討します。
skt
4
覚書として残しておきます。
LdapManager.javaに以下の様な関数を追加して、ログイン処理中にグループ名を変換する様に対策してみました。
protected String getGroupSAMAccountName(String groupName) {
Hashtable<String, String> env = new Hashtable<>();
env.put(Context.INITIAL_CONTEXT_FACTORY, fessConfig.getLdapInitialContextFactory());
env.put(Context.PROVIDER_URL, fessConfig.getLdapProviderUrl());
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, fessConfig.getLdapAdminSecurityPrincipal());
env.put(Context.SECURITY_CREDENTIALS, fessConfig.getLdapAdminSecurityCredentials());
try {
DirContext ctx = new InitialDirContext(env);
SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
String searchFilter = "(name=" + groupName + ")";
NamingEnumeration<SearchResult> results = ctx.search(fessConfig.getLdapBaseDn(), searchFilter, searchControls);
if (results.hasMore()) {
SearchResult searchResult = results.next();
String sAMAccountName = (String) searchResult.getAttributes().get("sAMAccountName").get();
ctx.close();
return sAMAccountName;
}
ctx.close();
} catch (Exception e) {
return groupName;
}
return null;
}
意図したようにグループ名の変換が行なわれているので、この様な対策で運用でやっていこうかと考えています。