問題タブ [security-context]
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.
php - symfony 2.3 __construct 関数の非オブジェクトに対するメンバー関数 get() の呼び出し
私のプロジェクトは、fosuserbundle を使用して symfony 2.3 で実行されます。コントローラーで現在のユーザーを取得したい
で実行すると機能しindexAction()
ます。しかし、コントローラーのすべての機能でユーザーが必要なので、コードを__construct
機能に入れてみましたが、もう機能しません。
構成関数で変数を設定できないのはなぜですか?
spring - Spring Security カスタム認証
春の MVC プロジェクトに実装されたカスタム認証プロバイダーがあります。私自身のオーバーライドする authenticate() メソッドでは、独自の認証を実装し、独自の UserPasswordAuthenticationToken() を構築してオブジェクトを返します。
上記のオブジェクト「UserPasswordAuthentictionToken」のユーザーIDは匿名化され、パスワードはnullになり、権限はこのユーザーに付与されたものに設定されます。
質問:
これにより、SecurityContextHolder または SecurityContext は一般に、オーバーライドされた authenticate() メソッドに渡される Authenticate オブジェクト内の元の着信資格情報を失いますか?
そうでない場合、それらの元の資格情報を削除し、Spring セキュリティ コンテキストに新しい匿名認証識別子を強制的に保持させるにはどうすればよいでしょうか (できれば他のメタデータと共に)。
jax-rs - セッション コンテキストの ejb は常に null です
mongo データベースへの接続を 1 つ保持する sigleton セッション Bean を作成しました。@EJB アノテーションを使用すると、jax-rs クラスでうまく機能します。コントローラーが構築され、Bean が注入された後、@PostConstruct でアノテーションが付けられた init メソッドを呼び出します。
次に、SecurityContext を実装する同様のクラスを作成しました。コントローラと同じパターンを使用しましたが、正しく動作しません。init() メソッドは呼び出されず、EJB インスタンスは常に null です。
EJB を私の SecurityContext 実装に注入する方法はありますか? MongoConnection を注入して使用しようとしない限り、うまく機能します
mongo データベースに接続するために使用するシングルトン セッション Bean:
JAX-RSコントローラーで使用します。ここで機能し、EntityController から継承されたクラスでも機能します。
mongo データベースでログに記録されたユーザー ロールを検索する独自のセキュリティ コンテキストを実装しました。
編集:
忘れましたが、glassfish 4 コンソールにも次の警告があります。
EDIT2:
symfony - SecurityContext->isGranted() はコントローラーで動作しますが、サービスでは動作しません
ログインまたは認証なしでアクセスできるアプリのパブリック領域があり、コントローラーでこのコードを実行すると、期待どおりif ($securityContext->isGranted('IS_AUTHENTICATED_ANONYMOUSLY'))
に取得true
されます。
次に、次のように定義されたサービスがあります。
しかし、このコードを実行すると:
例外があります:
メッセージ「セキュリティ コンテキストには認証トークンが含まれていません。考えられる理由の 1 つは、この URL にファイアウォールが構成されていないことです。
サービスは、コントローラーの最初のコマンドの直後に呼び出されます。
ありがとうございました
symfony - Symfony Service Configurator: security.context の getToken が NULL です
プロジェクトで Symfony Service Configurator を使用して、インスタンス化後にサービスを構成しています ( Docs )。Configure メソッドでは、現在のユーザーをログに記録する必要があるため、コンテナーを注入し、Security.context サービスからトークンを取得しようとしましたが、取得しました常に NULL です。Configurator コンストラクトに Security.context のみを挿入しようとしましたが、同じ結果が得られました。
任意のアイデアpls
ありがとう。
php - ユーザーが特定の役割を持っているかどうかを確認して、いくつかのアクションを許可するにはどうすればよいですか?
ログインしたユーザーがシステム上で特定の役割を持っているかどうかを確認する必要があるため、一部のアクションを許可するかどうかを確認します。私は JMSSecurityExtraBundle を使用しており、ドキュメントでExpression Based Authorizationを確認していますが、コードが機能していないため、何か問題があります。このコードを見てください:
しかし、すべての権限を持ち、ROLE_ADMIN を持つ ADMIN としてログインするたびに、「入力しないでください」というテキストだけが表示されますが、これは完全に間違っています。ここで説明するサンプルコードでは、作成者は$securityContext
var を使用していますが、どこから来たのでしょうか? この変数はどこで定義されていますか? SecurityContextを指していると思いますが、よくわかりません。コードのどこに問題がありますか? ユーザーが特定の役割を持っているかどうかを確認して、コードの実行を許可するかどうかを確認するにはどうすればよいですか?
php - Symfony2 Functional Tests のユーザートークン
これからテストクラスを継承して、Symfony2コントローラーの機能テストを行っています。
コントローラーをアプリの一部として使用する
と、Doctrine の「ユーザー」エンティティのインスタンスに$this->container->get('security.token_storage')->getToken()->getUser()
なります。$this->getUser()
ただし、機能テストを実行する場合:
$this->container->get('security.token_storage')->getToken()->getUser()
はユーザー名を含む文字列で、$this->getUser()
はNULL
.
アプリと機能テストで動作の一貫性を保つために何をする必要がありますか?
java - コンテキストが挿入された SecurityContext が null です
JAX-RS 2.0 と JPA を使用して Javae EE アプリを作成しました。現在のユーザー (ログイン中) をアプリケーション ユーザー データベースからのエンティティとして提供するために、(修飾子を使用して) User エンティティの特別なプロバイダーを作成しました。現在のユーザーを取得するには、使用します
問題は、これが null であることです。セキュリティは適切に設定されています (Wildfly 8.2) - アプリは認証 (基本) を要求しますが、SecurityContext
null です。コードは次のとおりです。
ご覧のとおり、null をチェックsecContext
すると、注入するリソースに到達しようとするとすぐに例外が表示されます@CurrentUser
。
では、これを修正する方法は?なぜSecurityContext
ヌルです。
authentication - Spring Security を使用する場合、SecurityContext はリクエスト間で共有されますか?
Spring Boot を使用して記述された REST API でステートレス トークン ベースの認証を使用すると、奇妙な動作が見られます。
クライアントには各リクエストに JWT トークンが含まれており、GenericFilterBean を拡張する私が作成したカスタム フィルターは、トークン内のクレームに基づいて、次を使用して認証オブジェクトをセキュリティ コンテキストに追加します。
リクエストを処理した後、次のようにしてコンテキストをクリアします。
しかし、私が開発した単純なアプリがさまざまな操作を実行すると、セキュリティ コンテキストが正しく設定されていないことが時々わかります。トークンを提供したリクエストに対して null になることもあります。フィルターは正しく呼び出され、setAuthencation() も呼び出されていますが、要求は認証に失敗し、403 拒否がスローされます。
セッション作成ポリシーを STATELESS に設定して明示的に http セッション管理をオフにすると、この動作は停止します。
ここで何が起こっているのでしょうか?セキュリティ コンテキストは、何らかの方法でリクエストを処理するスレッド間で共有されていますか?
multithreading - SecurityContextPersistenceFilter の動作をカスタマイズするには?
トークン ベースの認証を利用するステートレス REST API を開発しています。ここではSecurityContextHolder.getContext().setAuthentication(authentication)
、カスタム セキュリティ フィルター内から呼び出して、認証オブジェクトをセキュリティ コンテキストに手動で追加しています。コンテキストが正しく設定されていないという問題が発生しましたが、これは次のことが原因であると考えています。
1 つのセッションで同時リクエストを受信するアプリケーションでは、同じ SecurityContext インスタンスがスレッド間で共有されます。ThreadLocal が使用されていても、各スレッドの HttpSession から取得されるのは同じインスタンスです。これは、スレッドが実行されているコンテキストを一時的に変更したい場合に影響します。SecurityContextHolder.getContext() を使用し、返されたコンテキスト オブジェクトで setAuthentication(anAuthentication) を呼び出すと、同じ SecurityContext インスタンスを共有するすべての同時スレッドで Authentication オブジェクトが変更されます。...
SecurityContextPersistenceFilter の動作をカスタマイズして、リクエストごとにまったく新しい SecurityContext を作成し、あるスレッドの変更が別のスレッドに影響を与えるのを防ぐことができます。
問題は、SecurityContextPersistenceFilter の動作をどのように変更するかということです。
セキュリティ コンテキストを http セッションに関連付けないようにしたいのですが、CSRF 保護などを実装したいので、セッション作成ポリシーをステートレスに設定したくありません。