Spring Security Kerberos サンプル

リファレンスドキュメントのこのパートでは、サンプルプロジェクトを導入します。github.com/spring-projects/spring-security-kerberos (英語) からメインのディストリビューションをビルドすることで、サンプルを手動でコンパイルできます。

サンプルをそのまま実行すると、正しい構成が適用されるまで機能しません。特定のサンプルについては、以下のメモを参照してください。

サーバー側認証子を使用したセキュリティサーバー側認証のサンプルサンプル

spnego とフォームによるチケット検証を使用したセキュリティサーバー Spnego とフォーム認証のサンプルサンプル

spnego とフォームによるチケット検証を使用したセキュリティサーバー Spnego およびフォーム認証 XML サンプルサンプル (XML 構成)

セキュリティサーバーの Windows 認証サンプル

このサンプルのゴール:

  • Windows 環境では、ユーザーは Windows へのログオン時に入力された Windows Active Directory 資格情報を使用してアプリケーションにログオンできます。ユーザー ID/ パスワードの資格情報を要求する必要はありません。

  • Windows 以外の環境では、Active Directory の資格情報を入力する画面がユーザーに表示されます。

server:
    port: 8080
    app:
        ad-domain: EXAMPLE.ORG
        ad-server: ldap://WIN-EKBO0EQ7TS7.example.org/
        service-principal: HTTP/[email protected] (英語)  
        keytab-location: /tmp/tomcat.keytab
        ldap-search-base: dc=example,dc=org
        ldap-search-filter: "(| (userPrincipalName={0}) (sAMAccountName={0}))"

上では、このサンプルのデフォルト構成を確認できます。コマンドラインオプションやカスタム application.yml ファイルを使用するなど、通常の Spring Boot テクニックを使用してこれらの設定をオーバーライドできます。

サーバーを実行します。

$ java -jar sec-server-win-auth-2.1.1.jar

Linux では、-Djava.security.krb5.conf=/path/to/krb5.ini または GlobalSunJaasKerberosConfig Bean を使用してカスタム Kerberos 構成を使用する必要がある場合があります。

Windows Kerberos 環境での作業方法の詳細については、Windows ドメインコントローラーのセットアップを参照してください。

ドメイン認証情報を使用して Windows 8.1 にログインし、サンプルにアクセスします

ie1 ie2

Windows 以外の VM からサンプルアプリケーションにアクセスし、ドメイン認証情報を手動で使用します。

ff1 ff2 ff3

セキュリティサーバー側認証のサンプル

このサンプルは、フォームログイン経由で渡された資格情報を使用して、サーバーが Kerberos 環境に対してユーザーを認証する方法を示します。

サーバーを実行します。

$ java -jar sec-server-client-auth-2.1.1.jar
server:
    port: 8080

セキュリティサーバー Spnego とフォーム認証のサンプル

このサンプルでは、フォームベースの認証にフォールバックしながら、ブラウザーから Spnego ベースのネゴシエーションを受け入れるようにサーバーを構成する方法を示します。

user1 プリンシパル MIT Kerberos のセットアップを使用し、資格情報を使用して手動で Kerberos ログインを実行します。

$ kinit user1
Password for [email protected] (英語)  :

$ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: [email protected] (英語)  

Valid starting     Expires            Service principal
10/03/15 17:18:45  11/03/15 03:18:45  krbtgt/[email protected] (英語)  
  renew until 11/03/15 17:18:40

またはキータブファイルを使用します。

$ kinit -kt user2.keytab user1

$ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: [email protected] (英語)  

Valid starting     Expires            Service principal
10/03/15 17:25:03  11/03/15 03:25:03  krbtgt/[email protected] (英語)  
  renew until 11/03/15 17:25:03

サーバーを実行します。

$ java -jar sec-server-spnego-form-auth-2.1.1.jar

これで、ブラウザーを開いて、既存のチケットを使用して Spnego 認証を実行できるようになります。

Spnego を使用するようにブラウザーを構成する手順の詳細については、Spnego ネゴシエーション用にブラウザーを構成するを参照してください。

server:
    port: 8080
app:
    service-principal: HTTP/[email protected] (英語)  
    keytab-location: /tmp/tomcat.keytab

セキュリティサーバー Spnego およびフォーム認証 XML サンプル

これはセキュリティサーバー Spnego とフォーム認証のサンプルと同じサンプルですが、JavaConfig の代わりに XML ベースの構成を使用しています。

サーバーを実行します。

$ java -jar sec-server-spnego-form-auth-xml-2.1.1.jar

セキュリティクライアント KerberosRestTemplate サンプル

これは、Spring RestTemplate を使用して Kerberos で保護されたリソースにアクセスするサンプルです。セキュリティサーバー Spnego とフォーム認証のサンプルと組み合わせてご使用いただけます。

デフォルトのアプリケーションは以下のように構成されています。

app:
    user-principal: [email protected] (英語)  
    keytab-location: /tmp/user2.keytab
    access-url: http://neo.example.org:8080/hello

user1 プリンシパル MIT Kerberos のセットアップを使用し、資格情報を使用して手動で Kerberos ログインを実行します。

$ java -jar sec-client-rest-template-2.1.1.jar --app.user-principal --app.keytab-location

上記では、app.user-principal と app.keytab-location を空の値に設定するだけで、keytab ファイルの使用が無効になります。

操作が成功すると、[email protected] (英語) による以下の出力が表示されるはずです。

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
  <head>
    <title>Spring Security Kerberos Example</title>
  </head>
  <body>
    <h1>Hello [email protected] (英語)  !</h1>
  </body>
</html>

または、キータブファイルを含む user2 を使用します。

$ java -jar sec-client-rest-template-2.1.1.jar

操作が成功すると、[email protected] (英語) による以下の出力が表示されるはずです。

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
  <head>
    <title>Spring Security Kerberos Example</title>
  </head>
  <body>
    <h1>Hello [email protected] (英語)  !</h1>
  </body>
</html>