問題タブ [jaas]
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.
java - LDAPパスワードポリシーを使用したJAAS
ユーザーがJAAS(Glassfish 2.1)を使用して制限付きWebアプリケーションにアクセスしています。LDAPRealmが使用され、LDAPから認証が正常に実行されます。ユーザーにパスワードポリシーをインストールして、ユーザーがパスワードの変更を強制され、特定の複雑さ/長さのパスワードを使用し、パスワードの失敗と最後のN個のパスワードをチェックする必要があります。使用するLDAPサーバー(OpenDS)のパスワードポリシーはこれをすべてサポートしていますが、使用しているJAAS FORMログインでこの種の情報を受信する方法はまったく明らかではないため、情報(つまり「パスワードを変更してください」)は次のようになります。ユーザーに表示されます。
これを実装する方法について何かアイデアはありますか?データベースのみを使用することはオプションではありません。ユーザーはLDAPにいる必要があります。明らかではないのは、LDAPパスワードポリシーを使用するか、それともすべてWebアプリケーションでプログラムするかです。これを避け、LDAPのネイティブパスワードポリシーを使用したいと思います。
回答とよろしくお願いします、Bozo
authentication - JAAS - Tomcat のすべてのロールに対して isUserInRole が false を返す
ここに問題があります。
JAAS レルムがデータベースに正常に接続し、ユーザー名とパスワードが一致し、セッションが認証されます。ただし、どの役割もプリンシパルに入っていないようです。Tomcat の isInUserRole はすべてのロールに対して false を返し、Tomcat セキュリティもそれらを認識しません。
Server.xml のレルム構成は次のとおりです。
ここにlogin.configがあります
そして catalina.properties で、このような構成を参照します
アプリケーションを起動すると、デバッグ出力に次のメッセージが表示されます。サーバーからすべてのクラスにアクセスできる必要があるため、理由がわかりません
どんな助けでも大歓迎です。私はすでに投稿ごとに投稿を読み、チュートリアルごとにチュートリアルを読みましたが、この問題を抱えている人は解決策を投稿していません.
ところで、私は Tomcat 5.5 を使用していますが、私の選択ではなく、レガシー コードです。OWASP ログイン モジュール (OWASPJaasLoginModule.jar) も使用します。この jar ファイルは、server/lib ディレクトリにあります。
java - Grizzly 上の Jersey で JaaS を使用する
JaaS 認証を REST に追加するためのシンプルで柔軟な方法を見つけようとしています。正しい方向に導くと思われる投稿を見つけました(StevenCの回答を参照)。Jerseyコード自体ではなく、サーブレットコンテナがセキュリティを担当しているようです。このアイデアは気に入っていますが、実装について少しガイダンスが必要です。
Grizzly は私のサーブレット コンテナーであり、認証に JaaS を使用するように構成したいと考えています。今のところ、単純なユーザー名とパスワードの組み合わせで問題ありません。ユーザー名とパスワードのペアをコードに直接ハードコーディングしても問題ありません。JaaS を使用している限り、後で詳細を調整できます。
HTTP 経由で送信されるものに関しては、Cookie を保存することが、これをすべて機能させる最も簡単な方法であると考えています。認証ジャンクをジャージーコードから遠ざけるために必要なものは何でも。
ここまでで Grizzly を起動するコードは次のとおりです。
このプロセス全体が機能する場合、ユーザーのアクセス許可を確認する最善の方法は何ですか? おそらく、REST コードで特定の時点でアクセス許可を実際に検証したいと思うでしょう。私は正しい軌道に乗っていますか?もっと簡単な方法はありますか?チュートリアルへのリンクは素晴らしい答えです。「私はそれを行い、うまくいきました」のような答えでさえ、私が正しい方向に向かっているという温かいあいまいさを私に与えるでしょう.
助けてくれてありがとう。
編集:StevenCのコメントに対するいくつかの説明:
- リソースを保護するために、引き続きサーブレット フィルタを使用しますか? 認証の詳細をジャージー コードから分離できるものは何でも使用します。サーブレット フィルターである必要はありません。
- 「JaaS を使用するように構成する」とはどういう意味ですか? 当初の計画は、JaaS を使用して現在の API を保護することでした。次のフェーズは、API 全体をオンラインで利用できるようにすることです。API 呼び出しの周りに Jersey ラッパーを配置することは理にかなっているように見えましたが、Grizzly によって処理された認証を維持します。その時点で、Grizzly は JaaS とやり取りする必要があると思います。
- grizzly にリソースを保護させるだけの構成が必要だと思いますか? 私は、ユーザーを認証し、ロールに基づいて、ユーザーがリソースにアクセスすることを承認する 2 段階のプロセスを検討していました。アイデアは、Grizzly が (JaaS を使用して) 認証を処理し、Jersey が承認を処理するようにすることでした。
- 「RESTful リソースで Cookie を使用する必要はないと思います。」Cookie の使用を削除することは素晴らしいことですが、どうすれば実現できるのでしょうか? システムは、ユーザーが認証されているかどうかを知る必要があります。呼び出しごとにユーザー名/パスワードなどを渡すように依頼したくありません。すべての呼び出しでパラメーターとしてセッション トークンを渡すことでさえ、「醜い」ように見えます。
また、私は REST にかなり慣れていないことに注意してください。私はSOAPを数年間やっているので、「SOAPバイアス」があり、誰もが使用する明白で単純なソリューションから目がくらんでいる可能性があります. もっと簡単な方法がある場合は、お気軽に共有してください。私はできるだけ多くのことを学ぼうとしています。
security - Common Access Card (CAC) から完全なチェーンを送信しますか?
ユーザーの CAC カードの証明書を使用して、Web サービス クライアント (Axis2) から SSL 通信を有効にしようとしています。魅力のように機能します....WebサーバーがCACを有効にするまで。その時点で、SSL 接続は拒否され、チェーン内の他の証明書が含まれていないというエラー メッセージが表示されます。
プロバイダーを security.properties ファイルに追加するか、プログラムで作成することにより、プロバイダーが使用可能であることを確認しました。
私の現在のアプローチは、単にシステム プロパティを設定することです: System.setProperty("javax.net.ssl.keyStore", "NONE"); System.setProperty("javax.net.ssl.keyStoreType", "PKCS11");
この質問/回答から、このアプローチは「エンドエンティティ」証明書のみを送信することを理解しています。どうやら、独自の X509KeyManager を実装する必要があるようです。これは私にとって新しい分野です。誰かが良い参考文献を提案したり、その方法のサンプルを提供したりできますか?
支援に感謝します。
websphere - Websphere6.1JAASログアウト
すでに動作しているJAASを使用するWAS6.1上のWebアプリケーションがあります。整然とした方法で認証および承認します。しかし、私のログアウトページはプリンシパルの認証を解除していません。このアプリケーションは、GlassfishのJBossでは正しく動作しますが、WASでは動作しません。
私のログアウトページは、このコンテンツを含む単純なJSPです。
私は何かが足りないのですか?Webpshereの特定のAPIを使用しないことをお勧めしますが、どうしても必要な場合は使用します。
java - カスタム LoginModule を使用して Jackrabbit にログインする
Jackrabbit リポジトリでユーザーを認証する LoginModule を作成しようとしています。ただし、リポジトリ自体に保存されている資格情報を確認したいと思います。したがって、問題は、LoginModule でリポジトリに再度接続する必要があり、無限ループになることです。それについて何かできることはありますか?
java - HTTPS と JAAS を使用した Flex ファイルのアップロード?
Flex クライアントから Java EE アプリにファイルをアップロードしようとしています。
- 完全な HTTPS 環境で
- Java EE サーバーは JBoss 5 です
- BlazeDS の「カスタム」認証を使用する (フレックス フォームからユーザー名とパスワードを入力する)
- セッション認証ごとの BlazeDS の使用
通常の AMF 呼び出しでは、ユーザー プリンシパルにアクセスし、ロール メカニズムを使用できます。
ただし、アップロード サーブレットでは、ユーザー プリンシパルにアクセスできません。
これを修正するには?
java - JAAS を使用してフレックス クライアントに認証失敗の理由を示す方法は?
使用しています:
- JBoss 5
- フレックス SDK 3.5
- 認証が統合された BlazeDS 3 (JAAS および JBossSX 経由)
ログインの失敗は、常に同じ障害コードによってフレックス クライアントに示されます: Client.Authentication
ただし、基礎となる JAAS LoginModuleは、特定のjavax.security.auth.login.LoginExceptionサブクラスをスローします。
失敗したログインの理由をフレックス クライアントに伝達するにはどうすればよいですか?
jsf - j_security_checkを使ってJava EE/JSFでユーザー認証を行う
JSF 2.0 (およびコンポーネントが存在する場合) を使用する Web アプリケーションのユーザー認証と、ユーザー情報が JPA に保持されている Java EE 6 コアメカニズム (ログイン/アクセス許可の確認/ログアウト) に関する現在のアプローチはどうなっているのか疑問に思っています。実在物。Oracle Java EE チュートリアルは、これに関して少しまばらです (サーブレットのみを処理します)。
これには、Spring-Security (acegi) や Seam などの他のフレームワーク全体を使用する必要はありませんが、可能であれば新しい Java EE 6 プラットフォーム (Web プロファイル) に固執しようとしています。
java - Javaでサーバーに対してKerberosチケットを検証する方法は?
JAAS を使用して、Windows Kerberos チケット キャッシュを使用する Java アプリケーションでシングル サインオンを有効にしています。jaas.conf 構成ファイルは次のようになります。
これにより、Jaas LoginContext を作成し、ユーザーの Kerberos チケットを正常に取得できます。このチケットを JMI を使用してサーバー アプリケーションに送信します。ただし、Kerberos チケットが実際に Active Directory によって作成されたものであることをサーバー上で確認することはできません。
現時点では、サーバー プリンシパル (KerberosTicket.getServer()) 名のレルム部分にドメイン名が含まれているかどうかを確認するだけで、非常に安全でないチケットの検証を行っています。しかしもちろん、誰でも同じレルム名で独自の Kerberos サーバーをセットアップし、そのチケットを使用してアプリケーションを開始することができます。
私が見つけたアイデアの 1 つは、Kerberos チケットを使用して Active Directory LDAP に対して認証することでした。残念ながら、Windows 7 を使用しており、Kerberos チケットを再利用して LDAP に対して認証する方法は、レジストリ エントリを設定する場合にのみ機能します ( http://java.sun.com/j2se/1.5.0/docs/guide/security/jgssを参照)。 /tutorials/Troubleshooting.htmlで allowtgtsessionkey を検索します)。これはユーザーにとって受け入れがたいことです。
Active Directory サーバーに対してチケットを検証する方法はありますか? KerberosTicket.getServer() チケットがサーバーのチケットと等しいかどうかを確認する方法があると思いますが、その方法がわかりません。更新: KerberosTicket().getServer() は、サーバー チケット名とレルムのみを含む KerberosPrincipal のみを返すため、検証には適していません。
助けてくれてありがとう、メミンガー