身元検証モード¶
デフォルトの場合,ディレクトリは内部データベースを用いてユーザ管理と認証を行う.しかし他にも利用可能な認証機構があります
使用するモードはどのモードで配置されていますか WEB-INF/config-security/config-security.xml
環境変数によって config.security.type
それがそうです。
注釈中の関連行を取り消す WEB-INF/config-security/config-security.xml
:
<import resource="config-security-{mode}.xml"/>
LDAPの構成¶
Lightweight Directory Access Protocol (LDAP) GeoNetworkがリモートIDに格納されているユーザ名とパスワードを検証できるようにする.LDAPはデフォルトのGeoNetworkを用いてユーザインタフェース要素を登録する.
GeoNetworkにはLDAPを配置する2つの方法がある.また、検証中の代替方法を確認してください LDAP階層構造の構成 それがそうです。
LDAP構成は中で定義されている WEB-INF/config-security/config-security.properties
その後、環境を構成して、以前のファイルを更新したり、ファイルの属性を上書きしたりすることができます。 WEB-INF/config-security/config-security-overrides.properties
それがそうです。
LDAP接続の定義:
ldap.base.provider.url
:ポータルLDAPサーバの位置を示す.ディレクトリを含む計算機がLDAPサーバを持つ計算機にアクセスできることを確保する.適切なポートが開いていることを確認するためにチェックする、など。ldap.base.dn
:これは通常、“dc=と同様である。 [組織名はここにあります] DC=org“ldap.security.principal
/ldap.security.credentials
:LDAPにバインドするためのLDAP管理者ユーザを定義する.定義されていなければ,匿名バインディングを行う.エージェントはパスワードのユーザ名と証明書属性である.
# LDAP security properties ldap.base.provider.url=ldap://localhost:389 ldap.base.dn=dc=fao,dc=org ldap.security.principal=cn=admin,dc=fao,dc=org ldap.security.credentials=ldap
設定が正しいかどうかを検証するためには、LDAPブラウザアプリケーションを用いてLDAPサーバに接続してみてください。
LDAP構造においてユーザを検索して認証を行う位置を定義する:
ldap.base.search.base
:これは,ディレクトリがユーザの認証を行う位置を探す.ldap.base.dn.pattern
:これは,ユーザがバインドする判別可能な名前である.{0}は、ログイン画面にキー入力されたユーザ名に置き換えます。
ldap.base.search.base=ou=people ldap.base.dn.pattern=uid={0},${ldap.base.search.base} #ldap.base.dn.pattern=mail={0},${ldap.base.search.base}
LDAP階層構造の構成¶
2020年にはやや異なるLDAP配置方法が導入された.
これは、元の構成インフラストラクチャを拡張する(元の構成は、何の変更もなく有効である)。
構成を開始する前に、以下のことを理解する必要があります。
LDAPサーバ向けURL
クエリーを実行するためにLDAPサーバにログインするためのユーザ名/パスワード
ユーザのLDAPクエリの検索(ユーザがログイン画面にキー入力したコンテンツを与える)
LDAPユーザの属性をGeoNetworkユーザ属性に変換する方法に関する詳細な情報
ユーザが所属するグループを検索するためのLDAPクエリ
LDAPグループを地理ネットワークグループ/プロファイルに変換する方法
注釈
ある video developer chat これは,テスト/デバッグ/学習のための事前構成を設定したLDAPサーバ(Apache Directory Studioを使用)を含むLDAPを構成する方法について詳しく説明する.
注釈
私は階層構造を使うべきですか、それとも元の構成を使うべきですか?
既存の(元の)構成を持っている場合、新しい構成に移動する必要はありません。両者の間のコードの大部分は同じである.
もしあなたが新しい構成を始めるなら、私はあなたが階層構成を使用することをお勧めします。それは少し簡単で、テストケースとテストインフラの支援を受けた。また、ユーザ/グループが複数のディレクトリに位置するLDAPをサポートしている。
LDAP Beanの構成¶
GeoNetworkにはLDAP構成例が付属しており,テストケースで使用されているLDAPサーバと同様のLDAPサーバを作成するためにApache Directory Studioで使用することができる.このLDAPサーバに接続された例としてGeoNetwork構成がある.ご参照ください README.md あるいは…。 video developer chat 説明を得る。
注釈
この構成を使用するには、注釈中の“<import resource=”config-security-ldap-recursive.xml“/>”行をキャンセルしてください web/src/main/webapp/WEB-INF/config-security/config-security.xml
配置 contextSource Beanは、LDAPサーバとLDAPクエリを実行できるユーザを参照します。
<bean id="contextSource" class="org.springframework.security.ldap.DefaultSpringSecurityContextSource"> <constructor-arg value=“ldap://localhost:3333/dc=example,dc=com"/> <property name="userDn" value="cn=admin,ou=GIS Department,ou=Corporate Users,dc=example,dc=com"/> <property name="password" value="admin1"/> </bean>
配置 ldapUserSearch ユーザを探すためのクエリを含むbean(ログインページにキー入力されたコンテンツが与えられます)。
注:設定 searchSubtree 至る true LDAPを再帰的に探索する.使用 searchBase どのディレクトリから開始するかを制御する(“”はルートディレクトリから始まることを表す).
<bean id="ldapUserSearch" class="…"> <constructor-arg name="searchBase" value=""/> <constructor-arg name="searchFilter" value="(sAMAccountName={0})"/> <constructor-arg name="contextSource" ref="contextSource"/> <property name="searchSubtree" value="true"/> </bean>
配置 ldapUserContextMapper Beanは,LDAPユーザの属性をGeoNetworkユーザ属性に変換する方法を紹介する(上記のオリジナル構成文書を参照).
注: value 部分は2つの部分からなる.第1部分はLDAP属性の名前(空であってもよい)である.LDAP属性が欠落している場合、または空である場合、第2の部分はデフォルト値です(上記の元の構成文書を参照)。
<bean id="ldapUserContextMapper" class=“LDAPUserDetailsContextMapperWithProfileSearchEnhanced"> <property name="mapping"> <map> <entry key="name" value="cn,"/> <entry key="surname" value="sn,"/> <entry key="mail" value="mail,"/> <entry key="organisation" value=","/> <entry key="address" value=","/> <entry key="zip" value=","/> <entry key="state" value=","/> <entry key="city" value=","/> <entry key="country" value=","/> <entry key="profile" value=",RegisteredUser"/> <entry key="privilege" value=",none"/> </map> </property> </bean>
配置を継続する ldapUserContextMapper Beanであるため,LDAPはユーザにグループ/プロファイル役割を提供することも可能である.
注: ldapMembershipQuery メンバ問合せがその中で開始されるLDAPディレクトリ(“”はLDAPの根から始まることを表す).
<bean id="ldapUserContextMapper" class="LDAPUserDetailsContextMapperWithProfileSearchEnhanced"> <property name="importPrivilegesFromLdap" value=“true"/> <!-- typically, don't want GN to modify the LDAP server! --> <property name="createNonExistingLdapGroup" value="false" /> <property name="createNonExistingLdapUser" value="false" /> <property name="ldapManager" ref="ldapUserDetailsService" /> <property name="membershipSearchStartObject" value=""/> <property name="ldapMembershipQuery" value="(&(objectClass=*)(member=cn={2})(cn=GCAT_*))"/> </bean>
配置を継続する ldapUserContextMapper Beanは,LDAPロールをGeoNetworkグループ/プロファイルに変換できるようにしている.
注意:複数ご利用いただけます ldapRoleConverters それがそうです。
<bean id="ldapUserContextMapper" class="LDAPUserDetailsContextMapperWithProfileSearchEnhanced"> <property name="ldapRoleConverters"> <util:list> <ref bean="ldapRoleConverterGroupNameParser"/> </util:list> </property> </bean>
LDAPグループを地理ネットワークグループ/プロファイルに変換する方法が2つある.
♪the LDAPRoleConverterGroupNameParser その動作方式はオリジナルLDAP構成と同様である.LDAPグループ名を正規表現を用いてGeoNetworkグループ/プロファイルとして解析する.これはLDAPの役割を変換します GCAT_GENERAL_EDITOR GeoNetworkグループに追加する GENERAL プロファイル付き Editor.
<bean id="ldapRoleConverterGroupNameParser" class="LDAPRoleConverterGroupNameParser"> <property name="ldapMembershipQueryParser" value="GCAT_(.*)_(.*)"/> <property name="groupIndexInPattern" value="1"/> <property name="profileIndexInPattern" value=“2"/> <property name="profileMapping"> <map> <entry key="ADMIN" value="Administrator"/> <entry key="EDITOR" value="Editor"/> </map> </property> </bean>
もっと直接的な方法があります LDAPRoleConverterGroupNameConverter それがそうです。これはLDAPグループ名を地理ネットワークグループ/プロファイルリストに直接変換する.
<bean id=“ldapRoleConverterGroupNameParser" class="LDAPRoleConverterGroupNameConverter"> <property name="convertMap"> <map> <entry> <key> <value>HGIS_GeoNetwork_Admin</value> </key> <list> <bean class="org.fao.geonet.kernel.security.ldap.LDAPRole"> <constructor-arg name="groupName" type="java.lang.String" value="myGroup"/> <constructor-arg name="profileName" type="java.lang.String" value="Administrator"/> </bean> </list> </entry> <entry> <key> <value>HGIS_GeoNetwork_Editor</value> </key> <list> <bean class="org.fao.geonet.kernel.security.ldap.LDAPRole"> <constructor-arg name="groupName" type="java.lang.String" value=“myGroup"/> <constructor-arg name="profileName" type="java.lang.String" value="Editor"/> </bean> </list> </entry> </map> </property> </bean>
CASを構成する¶
CASを有効にするには、以下を含めて認証を設定してください WEB-INF/config-security/config-security-cas.xml
はい。 WEB-INF/config-security/config-security.xml
下りへのコメントをキャンセルします:
<import resource="config-security-cas.xml"/>
<import resource="config-security-cas-ldap.xml"/>
CAはLDAPやデータベースを用いてユーザ管理を行うことができる.データベースを使用するには、下りで注釈をキャンセルしてください。
<import resource="config-security-cas.xml"/>
<import resource="config-security-cas-database.xml"/>
CAS構成は中で定義されている WEB-INF/config-security/config-security.properties
それがそうです。前のファイルを更新したり、ファイルに属性オーバーレイを定義したりすることで、環境を構成することができます WEB-INF/config-security/config-security-overrides.properties
:
cas.baseURL=https://localhost:8443/cas
cas.ticket.validator.url=${cas.baseURL}
cas.login.url=${cas.baseURL}/login
cas.logout.url=${cas.baseURL}/logout?url=${geonetwork.https.url}/
配置鍵カバー¶
Keycloak 認証の詳細情報、ユーザ連携、アイデンティティ仲介、およびソーシャルログインを容易に格納することができるソフトウェア解決策である。GeoNetworkは鍵カバー事例を用いて認証を行うように設定することができる.
その説明に基づいてKeyloakをインストールするか、docker https://www.keycloak.org/Get-Started/Get-Started-dockerを用いたこの例の設定
鍵カバーの詳細は環境変数によって定義される.
KEYCLOAK_AUTH_SERVER_URL={keycloak url} KEYCLOAK_REALM={realm name} KEYCLOAK_RESOURCE={client name} KEYCLOAK_SECRET={client secret} KEYCLOAK_DISABLE_TRUST_MANAGER={true|false}
ファイルを編集することで、より多くの高度な鍵カバー設定を設定することができます WEB-INF/config-security/keycloak.json
GeonNetworkクライアントURL配置¶
クライアントを構成する際に有効なリダイレクトURIが設定されていることを確保し,Geonnetwork実装にURIをリダイレクトする.すなわちhttps://localhost:8443/geonnetwork/*である.設定が正しくない場合、エラーのリダイレクトURIが提供されていることを示すエラーメッセージが受信される可能性があります。また、クライアントのリバースチャネルのログアウトをテストする場合は、管理者URLをgeonnetworkに設定してインストールすることも確認してください。
ユーザ/ロール/グループ設定例¶
役割設定例¶
クライアントロール設定(Clients->MyClient->Roles)です。以下の役割を追加する
Administrator RegisteredUser Guest sample:UserAdmin sample:Reviewer sample:Editor sample:RegisteredUser
サンプルグループ構成¶
キーマントセット(左メニュー)に移ります。
“Administrator”という新しいグループを作成します
編集班です。Role Mappings->Client Roles(MyClient)->管理者役を選択し、“Add Selected”をクリックして管理者グループに参加する任意のユーザがGeonnetwork管理者となります。
ユーザ構成の例¶
キーボードマントユーザー(左側メニュー)に移行
既存のユーザーを追加または選択します。そしてそのユーザに移ります。
Role Mappings->Client Roles(Myclient)->アプリケーションに利用可能なロールを選択し、“Add Selected”をクリックし、またはGroups->Available Groups->Administrator Groupをクリックし、“Join”をクリックします。
Geoserverの同様の設定について説明した. geoserver documentation それがそうです。
Shibbolethの構成¶
ディレクトリはSAMLセキュリティの連携で実行可能である.Shibbolethは説明に従ってApacheに実装されなければならない here それがそうです。このディレクトリはApacheを介してアクセスされる.以下の設定を含むShibboleth認証による WEB-INF/config-security/config-security-shibboleth.xml
はい。 WEB-INF/config-security/config-security.xml
それがそうです。そして、環境を構成することができます config-security-shibboleth-overrides.properties
それがそうです。