問題タブ [principal]
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 - Tomcat でプリンシパル情報を保持する方法 (つまり、setPrincipal?)
Tomcat レルム機能と並行して、ユーザー ログインの 2 番目の方法を構築しようとしています。つまり、認証されていないユーザーは次のいずれかを行うことができます:
1. レルムを呼び出してサインインする
2. 有効なトークンを提供し、自動的にログインする
私は2を達成しようとしています。そのため、フィルターを使用してリクエストをラッパーにリダイレクトします。そのラッパー内で をオーバーライドしてgetUserPrincipal
、そのユーザーのプリンシパルを作成できるようにします。次に、コンテナーはプリンシパルを認識し、ユーザーがログイン ページにリダイレクトせずに入力できるようにします。
ただし、問題は次のとおりです。すべてのリクエストが正しいプリンシパルを取得するとは限らないようです。サーブレットに関するリクエスト、およびサーブレットがDispatcher
リクエストの転送に使用する場合は、プリンシパル セットが取得されます。単純なリンクまたはサーブレットを使用してもメソッドsendRedirect
が呼び出されないためgetUserPrincipal
、ユーザーが方法 2 を使用してログインしている場合でもログイン ページが表示されます。
これは、そのユーザー用に作成されたプリンシパルが「一時的」であるようなものです。ユーザーが認証されていることをコンテナが認識できるように、プリンシパルをセッションまたはどこかに保存する方法があるかどうか疑問に思っています。
spring-security - Spring Security - Bean クラス [org.springframework.security.authentication.UsernamePasswordAuthenticationToken] の無効なプロパティ 'principal'
プロジェクトにカスタムの「認証プロバイダ」を実装する必要がありましたが、JSP で認証のオブジェクト プロパティにアクセスしようとしたときに問題が発生しました。詳細: カスタム認証プロバイダーが Authentication オブジェクトを正常に作成しました
(ここでは関連するコードのみ)
次に、コントローラー メソッドで、ユーザー名を含むログ メッセージを表示します (これは、Authentication オブジェクトが作成され、セキュリティ コンテキストに配置されたことを証明します)。
次に、JSPページで、次を使用してユーザー名を表示したい
ただし、これによりエラー 500 が発生します。
ということにも気づきました
ユーザーは認証オブジェクトに追加された必要な役割を持っていますが、機能していません。
私が間違っていることはありますか?認証は正常に機能しますが、認証オブジェクトのプロパティにアクセスできません。
どうぞよろしくお願いいたします。
sql - 'dbo'にログインマッピングする理由
データベース設計では、ログイン'fed'と比較した'fed'のユーザー。
デザインデータベースで「fed」のログイン中のリクエストが「dbo」を選択する理由
c# - テスト内から WPF アプリケーションの CurrentPrincipal を設定する
CurrentPrincipal を使用してセキュリティを処理する WPF アプリケーションがあります。これはすべてうまくいきます。
ここで、テスト プロジェクト内からビュー モデル操作を呼び出します。問題は、テストの初期化でアプリケーションの新しいインスタンスを作成するが、このアプリケーションで CurrentPrincipal を設定する方法がわからないことです。
アプリケーションの外部から WPF アプリケーションの CurrentPrincipal を設定する方法を知っている人はいますか?
sql-server - SQL Server のプリンシパルを理解するには?
これはばかげているように聞こえますが、非常に紛らわしいと思います。MSDN では、定義は SQL Server リソースを要求できるエンティティです。基本的に、Windows レベルのプリンシパル、SQL Server レベルのプリンシパル、データベース レベルのプリンシパルの 3 種類のプリンシパルがあります。ここまでは問題ありません。1 つのプリンシパルの識別子は、このプリンシパルがどのようなタイプであっても、他のものとは異なる必要があるという印象を与えるだけです (これら 3 つのタイプのすべてのプリンシパルを 1 つのテーブルに配置できれば、一意の識別子を持つことになります)
紛らわしい部分は、以下の 3 つのクエリから来ています。
1)
(注:1つのデータベースで実行します)
2)
これで、最初のものはデータベース ユーザー プリンシパルを返し、2 番目のものはサーバー ユーザー プリンシパルを返すことがわかりました (間違っている場合は修正してください)。しかし、最初のクエリの 1 つの行が、2 番目のクエリの行と同じ principal_id を持つことができるのはなぜでしょうか? たとえば、データベース プリンシパルの 1 行は次のようになります。
名前:INFORMATION_SCHEMA、principal_id: 3
一方、2 番目のクエリの 1 行は
名前:sysadmin、principal_id: 3
これら 2 つの principal_id は何ですか? 前述したように、2 つのプリンシパルの識別子は、1 人が DB ユーザーで、もう 1 人がサーバー ユーザーであっても、異なると思いました (名前から、principal_id が識別子であると想定しています)。
その場合、principal_id がすべてのプリンシパルに対して一意ではなく、各クエリの範囲でのみ一意である場合 (最初のクエリの principal_id はデータベース ユーザーの識別子にすぎないため、サーバー ユーザーのものと同じになる可能性があります)、 3番目のクエリがあり、それが何を意味するのか理解できません:
3)
2 つの principal_id がその範囲内でのみ一意である場合、両方の principal_id で内部結合を行うとはどういう意味ですか? 内部結合は、この列が共同で一意であることを意味しますよね?
私が誤解している非常に初歩的なことがあるに違いありません。それについて助けてくれてありがとう!
spring - getPrincipal() はログイン成功後に null を返します
春のセキュリティ構成で複数の http 要素を [異なるパターンで] 使用しています。それぞれが個別の認証マネージャーを指しています。すべての http 要素に正常にログインできます。ただし、ログインに成功した後、返される Principal オブジェクトは null です。私を助けてください。
スプリングセキュリティの内容は以下の通りです
Web.xml は次のとおりです。
コントローラーコード
jsf - JSF + EJBでプリンシパルをプログラムで設定することは可能ですか?
EJBContext.getCallerPrincipal() を使用してユーザー名を取得したい
ただし、セキュリティ レルムはありません。 <security-role> または <group-name> が定義されていません。これは、ユーザー名/パスワードがリモート アプリケーションに送信されて検証されるためです。しかし、便宜上、プリンシパル クラスを使用してユーザー名とロールを取得したいと考えています。
インターセプターが取得できるように、JSF マネージド Bean または任意の EJB でプリンシパル (ユーザー名とロール) をプログラムで設定する方法はありますか? 例えば:
c# - System.DirectoryServices.AccountManagement 名前空間を使用して Active Directory ユーザー プロパティを取得するにはどうすればよいですか?
ユーザーから Active Directory のプロパティを取得し、使用したいと考えていますSystem.DirectoryServices.AccountManagement
。
私のコード:
c# - PrincipalContextを作成しようとするとコードがクラッシュする
このメソッドを呼び出すたびに、クラッシュします。
内側の例外は言う
{"保護されたメモリの読み取りまたは書き込みを試みました。これは、他のメモリが破損していることを示していることがよくあります。"}
StackTraceは
このメソッドを呼び出すとクラッシュが発生します
コードを削除/コメントすると、コンパイルされて正常に実行されます。
更新:DJKRAZEのアドバイスに従った後
2つの引数を受け入れるようにPrincipalContextを変更した後、新しいStackTraceは
c# - groupPrincipal.Members.Add が NoMatchingPrincipalException をスローするのを回避する方法
以下に示すように、特定の新しく作成された OU の下にグループ オブジェクトを作成する Active Directory ドメインを取得しました。たとえば、SubOuB の下のグループです。GlobalGroups の下のグローバル グループは既に存在します。
ここで、新しく作成された OU の下に新しく追加されたグループをメンバーとしてグローバル グループの 1 つに追加します。たとえば、GroupA_A をメンバーとして GlobalGroupB に追加します。
AD 構造とオブジェクトを見ると、両方のオブジェクトが見えます。ADSI エディターは、両方の「名前」が正しいことを示しています。新しい OU とグループ オブジェクトを作成した後、テスト アプリケーションでコードを手動で実行すると、グループをメンバーとしてグローバル グループに追加しても問題なく動作します。私が使用したすべてのコードは、同じ構造の AD を使用したステージング環境で動作するため、本番環境で問題が発生する理由がわかりません。
何か案は?DirectoryEntry
オブジェクトには、特定のオブジェクトのプロパティ値を強制的に再読み込みするメソッドがあることを確認しましRefreshCache
たが、これがここで役立つとは思いません。私の問題はタイミングの問題ですか?新しく作成されたグループが検出され、グローバル グループに追加できるように、既存のオブジェクトを強制的に「リロード」することはできますか?
アップデート
これは間違いなく AD 同期の問題のようです。新しく作成されたグループ オブジェクトの存在を継続的にチェックすると (例: Thread.Sleep( 1000 ) でループ)、私のコードは期待どおりに動作します。欠点は、どれくらい待たなければならないかわからないことです (テストは私の環境では 6 秒から 15 秒の間で変化しました)。また、これは非常に汚いアプローチだと思います。残念ながら、AD オブジェクトを「リフレッシュ」する方法やキャッシュを「フラッシュ」する方法に関する情報は見つかりませんでした。
更新 2
特定のドメイン コントローラーに接続すると、最初のクエリが遅くなり (3000 ミリ秒以上)、後続のクエリが高速になり、すべてが返るのにほぼ同じ時間がかかります。期待されるオブジェクトが実際に (クエリの結果として) 利用可能になるまで、定期的に AD にクエリを実行することを回避する方法はまだわかりません。