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.6.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-config
Copy 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/request
Copy 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/request
Copy 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=token
Copy 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_name
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kerberos キャッシュの名前を指定します。
Kerberos 認証情報を使用して
oc
ツールにログインします。oc login
# oc login
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロンプトで、Kerberos ユーザー名およびパスワードを入力します。
oc
ツールからログアウトします。oc logout
# oc logout
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Kerberos 認証情報を使用してチケットを取得します。
kinit
# kinit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロンプトで、Kerberos ユーザー名およびパスワードを入力します。
oc
ツールにログインできることを確認します。oc login
# oc login
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定が正しい場合は、別の認証情報を入力せずにログインできます。