問題タブ [spnego]
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.
jakarta-ee - SPNEGOとKerberosでコンテナ管理のセキュリティを使用するにはどうすればよいですか?
Webアプリ(JSF + JPA)に問題があります。Glassfish(3.1.1)にデプロイします。認証には、KerberosでADを使用する必要があります(私の組織ではLDAP認証は許可されていません)。このためにSPNEGOフィルターを作成しました。次に、ローカルデータベースを使用して、認証されたユーザーを検索し、そのユーザーのプロファイル、ロールなどを読み取ります。すべてのセキュリティチェックは、主に「rendered」属性でユーザーのセッションBeanを検証することによって行います。
私の質問は、(記述された環境で)データテーブルからの承認の直後に現在のユーザー(プリンシパル?)の役割を自動的に設定して、コンテナー管理のセキュリティを使用できるようにすることは可能ですか?
必要に応じて、コード/構成の詳細を提供できます。
php - php-curl の機能を有効にする方法
SPNEGO 認証済みサイトに値を投稿するには、CLI PHP スクリプトが必要です。
ただし、SPNEGO は何らかの理由で無効になっています。
私のphpinfoから抽出:
通信先の Apache サーバーは次のように設定されています。
コマンドラインから試してみるとcurl
うまくいきますが、ダミーのパスワードを入力する必要があります:
php curl で SPNEGO を有効にするにはどうすればよいですか? また、スクリプトで SPNEGO を使用するにはどうすればよいですか?
アップデート
私は次のことを試しました:
そして私は得る:HTTP ERROR 401
java - Java GSSAPI: 2 つの GSSCredential インスタンスの比較
私のコードは現在、私の Web サイトのユーザーに対して SPNEGO (Kerberos) 認証を実行しても問題なく動作します。ユーザーの身元の確認に基づいていくつかの決定を加速するために、特別なキャッシュメカニズムが用意されています。単純なパスワード認証の場合、これは非常に簡単です。「現在の」ユーザーとパスワードの組み合わせを「古い」ものと比較します。変更がない場合、決定は引き続きキャッシュできます。それ以外の場合は、再評価する必要があります。
Kerberos についても同じことをしようとしています。私はそれをほとんど機能させましたが、なぜGSSCredential.equals()
機能しないのか困惑しています。特に、各リクエストを認証した後に取得した GSSCredential インスタンスは、同じユーザー、同じサービス、同じ状況で取得されたものであるという点で「同一」です (と思います)。a を実行しtoString()
て出力を比較すると、それらは同じです (はい、これは無関係であることはわかっていますが、おそらく等しいはずであるということはまだ良い兆候です)。
ただし、GSSCredential_1.equals(GSSCredential_2)
リクエスト間では常に false を返します。これは、それぞれが異なる SPNEGO チケット (リプレイ シナリオを回避するために Kerberos に従って必要) を使用して取得されている可能性がありますが、それらのチケットは依然として同じプリンシパルに属しており、同じサービス プリンシパルを「対象」としていました。
私が行う必要があるコードの決定は、次のように表現するのが最適です。
これらの新しい資格情報は、以前に使用されたものと同じセキュリティ プリンシパルを表していますか? 有効期限、目的に対する有効性などの問題は、個別に評価され、後で評価されます。
それらの名前を比較すると「うまくいきます」が、もう少し堅牢なものを望んでいました。
何か案は?
java - sourceforge spnego を使用した Active Directory に対する SSO 認証
sourceforge spnego projectを使用して SSO 認証を実装しました。
あらゆる種類のサーブレット認証を実装するのはこれが初めてなので、私が知らない認証またはサーブレットに関する非常に基本的なものが欠けている可能性があります...
SpnegoHttpFilter
フィルター チェーンの一番上にあるライブラリにパッケージ化されている をオーバーライドなしで使用しています。次に、QueryFilter
ログオン名をデータベースの user_id にマップできるように、フィルター チェーンの次に独自のフィルターを含めました。ログオン名 (Windows ドメインの NT ユーザー ID) はgetRemoteUser
、HttpRequest が を通過した後に呼び出しによって返されSpnegoHttpFilter
ます。これはすべて正常に機能しているようです。
私自身のフィルターQueryFilter
は、本来の処理を行っており、ログオン名をデータベースの user_id に正しくマッピングしています。このフィルターには、認証に合格しないリクエストを拒否するロジックもあります。これも正常に機能しています。未承認のリクエストをシミュレートすると、このフィルターはそれを停止し、サーブレットには到達しません。
問題は、my で認証を通過し、サーブレットで完全に正常に実行された場合でも、すべてのリクエストが 401 (HTTP Request Status Unauthorized) として返されることです。QueryFilter
これを使用して、独自のフィルターで応答を明示的に 200 (HTTP Request Status OK) として定義しようとしましmyHttpResponse.setStatus(HttpServletResponse.SC_OK)
たが、何も変わりませんでした。
問題を切り分けるために、HttpSpnegoFilter
を完全に削除し、ハードコードされたログオン名 (NT ユーザー ID) をQueryFilter
. これは正常に機能し、応答は 401 (Unauthorized) ではなくなりました。
つまり、パッケージ化されたHttpSpnegoFilter
ものが何らかの形でリクエストを に変換していることを意味しUnauthorized
ます。と、言っても変わらない形でやっていて、実はOKなんです。
この spnego sourceforge プロジェクトを使用して、応答ヘッダーを 200 (OK) として返すように設定する方法を知っている人はいますか?
Web アプリの完全なフィルター チェーンweb.xml
は以下のとおりです。前述のようにHttpSpnegoFilter
、チェーンの上部でパッケージ化されたものを使用し、そのすぐ下で独自のフィルター (正しく機能しているようです) を使用します。
完全を期すために以下にも含まれています(ただし、クラスを使用せずにハードコードされたNTユーザーIDを渡すだけでQueryFilter
問題なく動作するため、問題には関係ないようです)。最後から 2 番目の行は、応答が役に立たないSpnegoHttpFilter
ように明示的に指示する場所です。OK
}
jakarta-ee - 認証に失敗した後に空のページを表示しないようにする
[CentOS 5.3、グラスフィッシュ 3.1.1、jdk1.6.30 64bit、spnego R7]
Kerberos (基本モード) を使用して AD に対してユーザーを認証する SPNEGO フィルターを定義しました。ユーザーが適切な資格情報を与えると、ページのコンテンツがユーザーに送信されます。ただし、認証に失敗すると、401 エラーの空のページがクライアントに返されます。web.xml で定義された 401 エラーのページがあります。
私の質問は: SPNEGO 認証 (==SPNEGO フィルター) が失敗した場合、ユーザーにコンテンツを送信する方法は? SPNEGO パラメータを定義する必要がありますか? または、前のフィルターが何も返さない場合、「ログインに失敗しました」コンテンツを追加する別のフィルターを追加する必要がありますか?
kerberos - オプションの SPNEGO Kerberos 認証
オプションのケルベロス認証を行うことは可能ですか?
私が望むのは、クライアント (ブラウザー) がドメイン上にない場合、ユーザー名/パスワードの Web ログインにリダイレクトされることです。それ以外の場合、SPNEGO は Kerberos 認証を行います。
WWW-Authenticate: Negotiate ヘッダーを非ドメイン ブラウザに送信しただけでは、それ以上何もしません。
認証方法がわからない場合にブラウザに別のことを試すように指示するオプションはありますか? または、「WWW-Authenticate」ヘッダーを送信する前に、ユーザーがドメインの一部であるかどうかを判断する必要がありますか?
java - Java と .NET の認証の統合 [両方の場所でのシングル サインオン]
異なるアプリケーション コンテナでホストされている Java と .NET アプリケーション間の AD に対してユーザーを認証するために、次のログオン メカニズムを実装したいと考えています。
私たちのサーバーのセットアップは
Tomcat を搭載した 1 つの Linux Web サーバー - これは、Java アプリが存在する場所です。
IIS を搭載した 1 つの Windows Web サーバー - これは、従来の .net アプリが存在する場所です。[認証は Windows 統合認証を介して行うことができます - これを変更したくありません - 他に方法がない場合を除きます]
1 つのドメイン コントローラー - win 2008
私たちの目的は、.NET または Java でホストされているログイン ページに AD [Active Directory] 資格情報を介してフォームからログインできる認証メカニズムを実装することです。認証が正常に完了した後、ユーザーは資格情報を再度求められることなくページを閲覧する必要があります。
必要な理由は、IIS との統合認証を使用するように設計された .Net アプリがいくつかあるためです。ユーザーが AD に再度ログインして .NET と認証が期限切れになるまで有効な Java アプリ。
SPNEGO プロジェクトについて聞いたことがありますが、上記のシナリオを実装するためにどのようなセットアップが必要かわかりません。
.NET サイトのセットアップを変更する必要がなくなるとよいでしょう。これらのアプリを維持する必要がなくなるからです。すべてのヘルプは大歓迎です。
前もって感謝します、
ED
cxf - Kerberos および偽装用に Tomcat を構成する
AD に接続し、それに応じてユーザーを認証できるように Tomcat を構成したいと考えています。
さらに、クライアント資格情報を使用していくつかの Web サービス (この場合は共有ポイント) を呼び出したいと考えています。
これまでのところ、http://tomcat.apache.org/tomcat-7.0-doc/windows-auth-howto.htmlのチュートリアルで説明されているように、SPNEGO 認証を使用するように Tomcat を正常に構成できました。Tomcat の SPNEGO 認証を使用したことに注意してください (Source Forge や Waffle ではありません)。
物事をシンプルに保ち、Tomcat の実装をそのまま使用したかったので、Source Forge の実装は使用しませんでした。さらに、すべての認証と承認を Tomcat で処理する必要がありました。SPNEGO を認証方法として使用しWEB.XML
、Tomcat の JNDI レルムを承認に使用します。
また、これは Windows のみであるため、WAFFLE は使用していません。
CXF を Web サービス スタックとして使用しています。http://cxf.apache.org/docs/client-http-transport-included-ssl-support.html#ClientHTTPTransport%28includesSSLsupport%29-SpnegoAuthentication%28Kerberos%29の CXF ドキュメントによると、必要なことはすべてWeb サービス (私の場合は共有ポイント) で認証するには、次を使用します。
jaas.conf で CXFClient を構成します (私の場合、Tomcat のサーバー JAAS 構成が配置されている場所で、jass.conf
次のようになります。
それでも、Web サービスを呼び出すとtomcatsrv.keytab
、クライアントのユーザー名 (duncan.attard など) ではなく、サービスのユーザー名 (AD および で構成された Tomcat のユーザー名) で呼び出されます。
私の質問は次のとおりです。クライアントのユーザー名を CXF に委任 (またはある種の偽装を使用) して、Share Point の Web サービスを呼び出したときに (たとえば、Copy.asmx を使用してファイルをアップロードしたい) 方法はありますか?の場合、ファイルは としてduncan.attard
ではなく としてアップロードされますtomcat.srv
。
どうもありがとう、あなたの助けは大歓迎です。
java - Webアプリケーションのシングルサインオン用のKerberos(SPNEGO)Javaライブラリの選択
私は現在、シングルサインオンを含む、JavaWebアプリケーションでのエンタープライズ認証メカニズムの実装に取り組んでいます。私たちが主にターゲットとしているのはWindowsネットワークであり、Kerberosは妥当な選択のように思われます。補足:私が理解している限り、SSOへのWeb(HTTP)環境で使用されるプロトコルはSPNEGOであり、基本的にKerberosのラッパーです。したがって、KerberosHTTPSSOライブラリは実際にはSPNEGOを使用しているようです。間違っている場合は修正してください。
このトピックを調査し始めたとき、私は明白な選択がないことに気づきました。それらをリストアップさせてください:
- SpringセキュリティKerberos/SPNEGO拡張。これは私が最初に見たものです(すでにSpringセキュリティを使用しているため)が、数年前にv1.0.0の2番目のマイルストーンで立ち往生しているようです。このSOの質問だけが、本番環境で使用できるというわずかな希望を与えます。
- WAFFLE-Windows認証機能フレームワーク。アクティブで機能が豊富なようです。汎用サーブレットとして、またSpringセキュリティフィルターとして「プラグイン」することができます。
- SPNEGOSourceForge。非常に軽量のようで、HTTPサーブレットフィルターを提供し、チュートリアルは簡単に実行できます。
あるオプションを他のオプションよりも選択する特別な理由はありますか?他に選択肢はありますか?
java - SPNEGO:GSS-APIレベルで失敗が指定されていません(メカニズムレベル:チェックサムが失敗しました)
SPNEGO + JBoss 7 + Windows 2008 R2 + JDK 7を使用しようとしていますが、次の例外が発生します。
キータブを作成しました:
このエラーが発生する理由とその解決方法について何か考えはありますか?