検索

23.7. Identity Management のスマートカード認証と Web アプリケーションの統合

download PDF
Identity Management の Web インフラストラクチャー Apache モジュールを介して、アプリケーションが Identity Management サーバーを認証バックエンドとして使用する開発者は、複数のロールアカウントをスマートカードにリンクしたユーザーの認証を有効にするようにアプリケーションを設定できます。これにより、これらのユーザーは、許可されたロールアカウントでアプリケーションを使用できます。

23.7.1. スマートカードを使用した Web アプリケーション認証の前提条件

Apache Web アプリケーションが実行しているサーバーで、以下を行います。
  • Identity Management ドメインで、サーバーをクライアントとして登録します。
  • sssd-dbus パッケージおよび mod_lookup_identity パッケージをインストールします。
  • mod_nss モジュールを使用して、Apache に作業用の HTTPS 接続が設定されていることを確認してください。

23.7.2. Web アプリケーションの Identity Management スマートカード認証の設定

  1. /etc/httpd/conf.d/nss.conf ファイルの mod_nss 設定で TLS 再ネゴシエーションを有効にします。
    NSSRenegotiation
    NSSRequireSafeNegotiation on
  2. ユーザー証明書を発行する CA が mod_nss 証明書データベースのクライアント証明書に対して信頼されていることを確認します。データベースのデフォルトの場所は /etc/httpd/alias です。
  3. Web アプリケーションを追加します。この手順では、ログインページと保護された領域で設定される、ほぼ最小限の例を示します。
    • /login エンドポイントでは、ユーザーはユーザー名のみを指定し、アプリケーションの保護された部分にユーザーを送信することができます。
    • /app のエンドポイントでは、REMOTE_USER 環境変数を確認します。ログインに成功すると、変数にはログイン中のユーザーの ID が含まれます。それ以外の場合は、変数は設定されません。
  4. ディレクトリーを作成し、そのグループを apache に、モードを少なくとも 750 に設定します。この手順では、/var/www/app/ という名前のディレクトリーを使用します。
  5. ファイルを作成して、そのグループを apache に設定し、モードを少なくとも 750 に設定します。この手順では、/var/www/app/login.py という名前のファイルを使用します。
    以下の内容をファイルに保存します。
    #! /usr/bin/env python
    
    def application(environ, start_response):
        status = '200 OK'
        response_body = """
    <!DOCTYPE html>
    <html>
        <head>
            <title>Login</title>
        </head>
        <body>
            <form action='/app' method='get'>
                Username: <input type='text' name='username'>
                <input type='submit' value='Login with certificate'>
            </form>
        </body>
    </html>
    """
        response_headers = [
            ('Content-Type', 'text/html'),
            ('Content-Length', str(len(response_body)))
        ]
        start_response(status, response_headers)
        return [response_body]
  6. ファイルを作成して、そのグループを apache に設定し、モードを少なくとも 750 に設定します。この手順では、/var/www/app/protected.py という名前のファイルを使用します。
    以下の内容をファイルに保存します。
    #! /usr/bin/env python
    
    def application(environ, start_response):
        try:
            user = environ['REMOTE_USER']
        except KeyError:
            status = '400 Bad Request'
            response_body = 'Login failed.\n'
        else:
            status = '200 OK'
            response_body = 'Login succeeded. Username: {}\n'.format(user)
    
        response_headers = [
            ('Content-Type', 'text/plain'),
            ('Content-Length', str(len(response_body)))
        ]
        start_response(status, response_headers)
        return [response_body]
  7. アプリケーションの設定ファイルを作成します。この手順では、以下の内容を含む /etc/httpd/conf.d/app.conf という名前のファイルを使用しています。
    <IfModule !lookup_identity_module>
        LoadModule lookup_identity_module modules/mod_lookup_identity.so
    </IfModule>
    
    WSGIScriptAlias /login /var/www/app/login.py
    WSGIScriptAlias /app /var/www/app/protected.py
    
    <Location "/app">
        NSSVerifyClient require
        NSSUserName SSL_CLIENT_CERT
        LookupUserByCertificate On
        LookupUserByCertificateParamName "username"
    </Location>
    このファイルで以下を行います。
    • 最初にロードされていない場合は、mod_lookup_identity を読み込みます。
    • 次の部分では、/login/app はそれぞれの Web Server Gateway Interface(WSGI) スクリプトを参照します。
    • 最後の部分は、TLS ハンドシェイク中にクライアント証明書を必要とし、それを使用するように /app エンドポイントに mod_nss を設定します。さらに、ユーザーのアイデンティティーを検索するようにオプションの要求パラメーター username を設定します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.