問題タブ [spring-security-kerberos]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2971 参照

spring - REST API (Tomcat) 用の Spring Security Kerberos SSO

これが私の問題です:

コンテキスト: -Windows Server 2012 と ActiveDirectory -Tomcat -Rest API (Spring)

現在、REST リクエストを制限しようとしています。AD の特定のグループのみが特定のリソースにアクセスできるようにしたいと考えています。私は Kerberos 認証に制限されています。

システム構成

  1. ドメイン「Tomcat」にユーザーを作成します
  2. setspn -a HTTP/apirest.domain@DOMAIN
  3. ktpass を使用して tomcat.keytab を生成する

API レスト構成

ここで見つけることができる github の春のセキュリティ サンプルを使用しています。

https://github.com/spring-projects/spring-security-kerberos/tree/master/spring-security-kerberos-samples/sec-server-win-auth

EntryPoint があり、これは私のコンテキスト (API Rest) では必要ないことを知っています。このサンプルを選択したのは、Windows 認証コンテキストを使用しているように見え、Spring セキュリティ コンテキストで自動的に認証するために使用しているようだからです。その直後に、LDAP 要求が送信され、ログに記録されたユーザーに関するすべての情報が抽出されます。私の場合、グループを抽出する必要があります。

私も使用しています:

https://github.com/GyllingSW/kerberos-demo

「ActiveDirectoryLdapAuthoritiesPopulator」の代わりに「RoleStrippingLdapUserDetailsMapper.java」クラスでユーザーのロールを抽出します。この実装はローカルホスト認証も提供しますが、NTLM トークンの問題は、Spring Security の最後のコミットで修正されたようです。

これが私が望むことを行う正しい方法であるかどうかはよくわかりません。

認証に失敗したようで、ログに問題が 1 つだけあります..

「プロパティ 'userDn' が設定されていません - 読み取り/書き込み操作には匿名コンテキストが使用されます」

質問

  1. Tomcat アカウントを使用して Tomcat サービスを実行する必要がありますか? (そうらしいです、はい)
  2. Kerberos セキュリティで正しいことをしていますか?
  3. 匿名のコンテキストを取り除くにはどうすればよいですか?
  4. 匿名コンテキストは、Tomcat の起動直後に設定されているようです。ユーザー (たとえば、user1) が残りの API (EntryPoint など) を要求した直後にコンテキストを取得したい

不明な点がある場合はお知らせください。再構成を試みます。

ありがとう、