第11章 認証および承認


11.1. Kerberos および SPNEGO 統合

11.1.1. Kerberos および SPNEGO 統合

Kerberos は、オープンネットワークコンピューティング環境向けに設計された認証方法です。チケットとオーセンティケーターに基づいて、ユーザーとサーバー両方のアイデンティティーを確立します。これは、セキュアではない環境で通信する 2 つのノードが、安全な方法で相互のアイデンティティーを確立するのに役立ちます。
SPNEGO は、クライアントアプリケーションによって使用される認証方法で、クライアントアプリケーション自体をサーバーに対して認証します。この技術は、クライアントアプリケーションと相互の通信を試みるサーバーが、もう一方がサポートする認証プロトコルを認識できない場合に使用されます。SPNEGO は、クライアントアプリケーションとサーバー間の共通の GSSAPI メカニズムを判断し、その後のセキュリティー操作をすべてディスパッチします。

Kerberos および SPNEGO 統合

一般的なセットアップでは、ユーザーは Active Directory ドメインによって管理されるデスクトップにログインします。その後、ユーザーは Firebox または Internet Explorer の web ブラウザーを使用して、JBoss EAP でホストされる JBoss Negotiation を使用する web アプリケーションにアクセスします。Web ブラウザーはデスクトップサインオン情報を Web アプリケーションに転送します。JBoss EAP は、Active Directory または Kerberos サーバーでバックグラウンドの GSS メッセージを使用し、ユーザーを検証します。これにより、ユーザーは web アプリケーションへのシームレスな SSO を実現することができます。

11.1.2. SPNEGO を使用したデスクトップ SSO

SPNEGO を使用してデスクトップ SSO を設定するには、以下を設定します。
  • セキュリティードメイン
  • システムプロパティー
  • Web アプリケーション

手順11.1 SPNEGO を使用したデスクトップ SSO の設定

  1. セキュリティードメインの設定

    サーバーのアイデンティティーを表現し、Web アプリケーションをセキュアにするようにセキュリティードメインを設定します。

    例11.1 セキュリティードメインの設定

    <security-domains>
    
        <security-domain name="host" cache-type="default">
    
          <authentication>
    
            <login-module code="Kerberos" flag="required">
    
              <module-option name="storeKey" value="true"/>
    
              <module-option name="useKeyTab" value="true"/>
    
              <module-option name="principal" value="host/testserver@MY_REALM"/>
    
              <module-option name="keyTab" value="/home/username/service.keytab"/>
    
              <module-option name="doNotPrompt" value="true"/>
    
              <module-option name="debug" value="false"/>
    
            </login-module>
    
           </authentication>
    
         </security-domain>
    
       
    
         <security-domain name="SPNEGO" cache-type="default">
    
           <authentication>
    
             <login-module code="SPNEGO"  flag="requisite">
    
               <module-option name="password-stacking" value="useFirstPass"/>
    
               <module-option name="serverSecurityDomain" value="host"/>
    
             </login-module>
    
    
             <!-- Login Module For Roles Search -->
    
           </security-domain>
    
    
  2. システムプロパティーの設定

    必要な場合は、ドメインモデルでシステムプロパティーを設定できます。

    例11.2 システムプロパティーの設定

    <system-properties>
    
          <property name="java.security.krb5.kdc" value="mykdc.mydomain"/>
    
          <property name="java.security.krb5.realm" value="MY_REALM"/>
    
        </system-properties>
    
    
  3. Web アプリケーションの設定

    オーセンティケーターをオーバーライドすることはできませんが、web アプリケーションを設定するために NegotiationAuthenticator を jboss-web.xml 記述子にバルブとして追加することもできます。
    注記
    バルブには、セキュアなリソースを決定するために使用されるため、security-constraint および login-config が web.xml ファイルに定義する必要があります。ただし、選択した auth-method はこのオーセンティケーターによって上書きされます。

    例11.3 Web アプリケーションの設定

     <!DOCTYPE jboss-web PUBLIC
      "-//JBoss//DTD Web Application 2.4//EN"
      "http://www.jboss.org/j2ee/dtd/jboss-web_4_0.dtd">
    
      <jboss-web>
    
        <security-domain>SPNEGO</security-domain>
    
        <valve>
    
          <class-name>org.jboss.security.negotiation.NegotiationAuthenticator</class-name>
    
        </valve>
    
      </jboss-web>
    
    
    web アプリケーションでは、JBoss Negotiation クラスを配置できるように META-INF/MANIFEST.MF に依存関係を定義する必要もあります。

    例11.4 META-INF/MANIFEST.MFへの依存関係の定義

        Manifest-Version: 1.0
    
        Build-Jdk: 1.6.0_24
    
        Dependencies: org.jboss.security.negotiation
    
    

11.1.3. Microsoft Windows ドメインでの JBoss Negotiation の設定

ここでは、JBoss EAP が Active Directory ドメインの一部である Microsoft Windows サーバーで稼働している場合に JBoss Negotiation が使用されるために必要なアカウントを設定する方法を説明します。
ここでは、サーバーへのアクセスに使用されるホスト名は {hostname} と呼ばれます。レルムは {realm} と呼ばれ、ドメインは {domain} と呼ばれ、JBoss EAP インスタンスをホストするサーバーは {machine_name} と呼ばれます。

手順11.2 Microsoft Windows ドメインでの JBoss Negotiation の設定

  1. 既存のサービスプリンシパルマッピングの消去

    Microsoft Windows ネットワークでは、一部のマッピングが自動作成されます。自動的に作成されたマッピングを削除し、ネゴシエーションが適切に行われるようにサーバーのアイデンティティーをサービスプリンシパルへマップします。マッピングにより、クライアントコンピューター上の Web ブラウザーがサーバーを信頼し、SPNEGO の実行を試みます。クライアントコンピューターは、HTTP{hostname} 形式のマッピングに対し、ドメインコントローラーを検証します。
    既存のマッピングを削除する手順は次のとおりです。
    • setspn -L {machine_name} コマンドを使用して、コンピューターのドメインに登録されているマッピングを一覧表示します。
    • コマンド setspn -D HTTP/{hostname} {machine_name} および setspn -D host/{hostname} {machine_name} を使用して、既存のマッピングを削除します。
  2. ホストユーザーアカウントを作成します。
    注記
    ホスト名が {machine_name} とは異なることを確認します。
    これ以降では、ホストのユーザー名は {user_name} と呼ばれます。
  3. {user_name}{hostname} 間のマッピングを定義します。

    • 以下のコマンドを実行して、サービスプリンシパルマッピング ktpass -princ HTTP/{hostname}@{realm} -pass * -mapuser {domain}\{user_name} を設定します。
    • プロンプトが表示されたら、ユーザー名のパスワードを入力します。
      注記
      キータブのエクスポートの前提条件として、ユーザー名のパスワードをリセットします。
    • 以下のコマンドを実行してマッピングを確認します。 setspn -L {user_name}
  4. EAP JBoss がインストールされているサーバーに、ユーザーのキータブをエクスポートします。

    以下のコマンドを実行してキータブ ktab -k service.keytab -a HTTP/{hostname}@{realm} をエクスポートします。
    注記
    このコマンドは、HTTP/{hostname} プリンシパルのチケットをキータブ service.keytab にエクスポートします。キータブは、JBoss でホストセキュリティードメインを設定するために使用されます。
  5. セキュリティードメイン内で以下のようにプリンシパルを定義します。
    <module-option name="principal">HTTP/{hostname}@{realm}</module-option>
    
    
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る