This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.4.5.6. 要求ヘッダーを使用した Apache 認証設定の例
この例では、要求ヘッダーアイデンティティープロバイダーを使用して OpenShift Container Platform の Apache 認証プロキシーを設定します。
カスタムプロキシー設定
mod_auth_gssapi モジュールの使用は、要求ヘッダーアイデンティティープロバイダーを使用して Apache 認証プロキシーを設定する一般的な方法ですが、必須の方法ではありません。以下の要件を満たすと、他のプロキシーを簡単に使用できます。
-
クライアント要求の
X-Remote-Userヘッダーをブロックして、スプーフィングを防ぎます。 -
RequestHeaderIdentityProvider設定でクライアント証明書の認証を適用します。 -
チャレンジフローを使用してすべての認証要求についての
X-Csrf-Tokenヘッダーを設定する必要があります。 -
/oauth/authorizeエンドポイントとそのサブパスのみがプロキシーされる必要があります。バックエンドサーバーがクライアントを正しい場所に送信できるようリダイレクトは書き換える必要があります。 -
https://<namespace_route>/oauth/authorizeにプロキシーする URL は/authorizeで終了 (末尾のスラッシュなし) する必要があります。たとえば、https://proxy.example.com/login-proxy/authorize?…は、https://<namespace_route>/oauth/authorize?…にプロキシーする必要があります。 -
https://<namespace_route>/oauth/authorizeにプロキシーされる URL のサブパスは、https://<namespace_route>/oauth/authorizeにプロキシーする必要があります。たとえば、https://proxy.example.com/login-proxy/authorize/approve?…は、https://<namespace_route>/oauth/authorize/approve?…にプロキシーする必要があります。
https://<namespace_route> アドレスは OAuth サーバーへのルートであり、oc get route -n openshift-authentication を実行して取得できます。
要求ヘッダーを使用した Apache 認証の設定
この例では、mod_auth_gssapi モジュールを使用し、要求ヘッダーアイデンティティープロバイダーを使用して Apache 認証プロキシーを設定します。
前提条件
mod_auth_gssapiモジュールを Optional チャンネル から取得します。ローカルマシンに以下のパッケージをインストールする必要があります。-
httpd -
mod_ssl -
mod_session -
apr-util-openssl -
mod_auth_gssapi
-
信頼されたヘッダーを送信する要求を検証するために CA を生成します。CA を含む OpenShift Container Platform
ConfigMapオブジェクトを定義します。これは、以下を実行して行います。oc create configmap ca-config-map --from-file=ca.crt=/path/to/ca -n openshift-config
$ oc create configmap ca-config-map --from-file=ca.crt=/path/to/ca -n openshift-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow CA は、
ConfigMapオブジェクトのca.crtキーに保存する必要があります。- このプロキシー用のクライアント証明書を生成します。この証明書は、x509 証明書ツールを使用して生成できます。信頼されたヘッダーを送信する要求を検証するために、生成した CA でクライアント証明書に署名する必要があります。
- アイデンティティープロバイダーのカスタムリソース (CR) を作成します。
手順
このプロキシーはクライアント証明書を使用して OAuth サーバーに接続します。これは、X-Remote-User ヘッダーを信頼するように設定されます。
-
Apache 設定の証明書を作成します。
SSLProxyMachineCertificateFileパラメーターの値として指定する証明書は、プロキシーをサーバーに対して認証するために使用されるプロキシーのクライアント証明書です。これは、拡張されたキーのタイプとしてTLS Web Client Authenticationを使用する必要があります。 Apache 設定を作成します。以下のテンプレートを使用して必要な設定および値を指定します。
重要テンプレートを十分に確認し、その内容を環境に合うようにカスタマイズします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記https://<namespace_route>アドレスは OAuth サーバーへのルートであり、oc get route -n openshift-authenticationを実行して取得できます。カスタムリソース (CR) の
identityProvidersスタンザを更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定を確認します。
適切なクライアント証明書およびヘッダーを指定して、トークンを要求し、プロキシーをバイパスできることを確認します。
curl -L -k -H "X-Remote-User: joe" \ --cert /etc/pki/tls/certs/authproxy.pem \ https://<namespace_route>/oauth/token/request
# curl -L -k -H "X-Remote-User: joe" \ --cert /etc/pki/tls/certs/authproxy.pem \ https://<namespace_route>/oauth/token/requestCopy to Clipboard Copied! Toggle word wrap Toggle overflow クライアント証明書を提供しない要求が、証明書なしでトークンを要求して失敗することを確認します。
curl -L -k -H "X-Remote-User: joe" \ https://<namespace_route>/oauth/token/request
# curl -L -k -H "X-Remote-User: joe" \ https://<namespace_route>/oauth/token/requestCopy to Clipboard Copied! Toggle word wrap Toggle overflow challengeURLリダイレクトがアクティブであることを確認します。curl -k -v -H 'X-Csrf-Token: 1' \ https://<namespace_route>/oauth/authorize?client_id=openshift-challenging-client&response_type=token
# curl -k -v -H 'X-Csrf-Token: 1' \ https://<namespace_route>/oauth/authorize?client_id=openshift-challenging-client&response_type=tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の手順で使用する
challengeURLリダイレクトをコピーします。このコマンドを実行して、
WWW-Authenticate基本チャレンジ、ネゴシエートチャレンジ、またはそれらの両方のチャレンジを含む401応答を表示します。curl -k -v -H 'X-Csrf-Token: 1' \ <challengeURL_redirect + query>
# curl -k -v -H 'X-Csrf-Token: 1' \ <challengeURL_redirect + query>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Kerberos チケットを使用または使用せずに、OpenShift CLI (
oc) へのログインをテストします。kinitを使用して Kerberos チケットを生成した場合は、これを破棄します。kdestroy -c cache_name
# kdestroy -c cache_name1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kerberos キャッシュの名前を指定します。
Kerberos 認証情報を使用して
ocツールにログインします。oc login
# oc loginCopy to Clipboard Copied! Toggle word wrap Toggle overflow プロンプトで、Kerberos ユーザー名およびパスワードを入力します。
ocツールからログアウトします。oc logout
# oc logoutCopy to Clipboard Copied! Toggle word wrap Toggle overflow Kerberos 認証情報を使用してチケットを取得します。
kinit
# kinitCopy to Clipboard Copied! Toggle word wrap Toggle overflow プロンプトで、Kerberos ユーザー名およびパスワードを入力します。
ocツールにログインできることを確認します。oc login
# oc loginCopy to Clipboard Copied! Toggle word wrap Toggle overflow 設定が正しい場合は、別の認証情報を入力せずにログインできます。