問題タブ [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.

0 投票する
1 に答える
762 参照

php - symfony 2.3 __construct 関数の非オブジェクトに対するメンバー関数 get() の呼び出し

私のプロジェクトは、fosuserbundle を使用して symfony 2.3 で実行されます。コントローラーで現在のユーザーを取得したい

で実行すると機能しindexAction()ます。しかし、コントローラーのすべての機能でユーザーが必要なので、コードを__construct機能に入れてみましたが、もう機能しません。

構成関数で変数を設定できないのはなぜですか?

0 投票する
1 に答える
561 参照

spring - Spring Security カスタム認証

春の MVC プロジェクトに実装されたカスタム認証プロバイダーがあります。私自身のオーバーライドする authenticate() メソッドでは、独自の認証を実装し、独自の UserPasswordAuthenticationToken() を構築してオブジェクトを返します。

上記のオブジェクト「UserPasswordAuthentictionToken」のユーザーIDは匿名化され、パスワードはnullになり、権限はこのユーザーに付与されたものに設定されます。

質問:
これにより、SecurityContextHolder または SecurityContext は一般に、オーバーライドされた authenticate() メソッドに渡される Authenticate オブジェクト内の元の着信資格情報を失いますか?

そうでない場合、それらの元の資格情報を削除し、Spring セキュリティ コンテキストに新しい匿名認証識別子を強制的に保持させるにはどうすればよいでしょうか (できれば他のメタデータと共に)。

0 投票する
1 に答える
790 参照

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:

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

symfony - SecurityContext->isGranted() はコントローラーで動作しますが、サービスでは動作しません

ログインまたは認証なしでアクセスできるアプリのパブリック領域があり、コントローラーでこのコードを実行すると、期待どおりif ($securityContext->isGranted('IS_AUTHENTICATED_ANONYMOUSLY'))に取得trueされます。

次に、次のように定義されたサービスがあります。

しかし、このコードを実行すると:

例外があります:

メッセージ「セキュリティ コンテキストには認証トークンが含まれていません。考えられる理由の 1 つは、この URL にファイアウォールが構成されていないことです。

サービスは、コントローラーの最初のコマンドの直後に呼び出されます。

ありがとうございました

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

symfony - Symfony Service Configurator: security.context の getToken が NULL です

プロジェクトで Symfony Service Configurator を使用して、インスタンス化後にサービスを構成しています ( Docs )。Configure メソッドでは、現在のユーザーをログに記録する必要があるため、コンテナーを注入し、Security.context サービスからトークンを取得しようとしましたが、取得しました常に NULL です。Configurator コンストラクトに Security.context のみを挿入しようとしましたが、同じ結果が得られました。

任意のアイデアpls

ありがとう。

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

php - ユーザーが特定の役割を持っているかどうかを確認して、いくつかのアクションを許可するにはどうすればよいですか?

ログインしたユーザーがシステム上で特定の役割を持っているかどうかを確認する必要があるため、一部のアクションを許可するかどうかを確認します。私は JMSSecurityExtraBundle を使用しており、ドキュメントでExpression Based Authorizationを確認していますが、コードが機能していないため、何か問題があります。このコードを見てください:

しかし、すべての権限を持ち、ROLE_ADMIN を持つ ADMIN としてログインするたびに、「入力しないでください」というテキストだけが表示されますが、これは完全に間違っています。ここで説明するサンプルコードでは、作成者は$securityContextvar を使用していますが、どこから来たのでしょうか? この変数はどこで定義されていますか? SecurityContextを指していると思いますが、よくわかりません。コードのどこに問題がありますか? ユーザーが特定の役割を持っているかどうかを確認して、コードの実行を許可するかどうかを確認するにはどうすればよいですか?

0 投票する
1 に答える
1380 参照

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.

アプリと機能テストで動作の一貫性を保つために何をする必要がありますか?

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

java - コンテキストが挿入された SecurityContext が null です

JAX-RS 2.0 と JPA を使用して Javae EE アプリを作成しました。現在のユーザー (ログイン中) をアプリケーション ユーザー データベースからのエンティティとして提供するために、(修飾子を使用して) User エンティティの特別なプロバイダーを作成しました。現在のユーザーを取得するには、使用します

問題は、これが null であることです。セキュリティは適切に設定されています (Wildfly 8.2) - アプリは認証 (基本) を要求しますが、SecurityContextnull です。コードは次のとおりです。

ご覧のとおり、null をチェックsecContextすると、注入するリソースに到達しようとするとすぐに例外が表示されます@CurrentUser

では、これを修正する方法は?なぜSecurityContextヌルです。

0 投票する
1 に答える
6437 参照

authentication - Spring Security を使用する場合、SecurityContext はリクエスト間で共有されますか?

Spring Boot を使用して記述された REST API でステートレス トークン ベースの認証を使用すると、奇妙な動作が見られます。

クライアントには各リクエストに JWT トークンが含まれており、GenericFilterBean を拡張する私が作成したカスタム フィルターは、トークン内のクレームに基づいて、次を使用して認証オブジェクトをセキュリティ コンテキストに追加します。

リクエストを処理した後、次のようにしてコンテキストをクリアします。

しかし、私が開発した単純なアプリがさまざまな操作を実行すると、セキュリティ コンテキストが正しく設定されていないことが時々わかります。トークンを提供したリクエストに対して null になることもあります。フィルターは正しく呼び出され、setAuthencation() も呼び出されていますが、要求は認証に失敗し、403 拒否がスローされます。

セッション作成ポリシーを STATELESS に設定して明示的に http セッション管理をオフにすると、この動作は停止します。

ここで何が起こっているのでしょうか?セキュリティ コンテキストは、何らかの方法でリクエストを処理するスレッド間で共有されていますか?

0 投票する
1 に答える
1036 参照

multithreading - SecurityContextPersistenceFilter の動作をカスタマイズするには?

トークン ベースの認証を利用するステートレス REST API を開発しています。ここではSecurityContextHolder.getContext().setAuthentication(authentication)、カスタム セキュリティ フィルター内から呼び出して、認証オブジェクトをセキュリティ コンテキストに手動で追加しています。コンテキストが正しく設定されていないという問題が発生しましたが、これは次のことが原因であると考えています。

リクエスト間の SecurityContext の保存

1 つのセッションで同時リクエストを受信するアプリケーションでは、同じ SecurityContext インスタンスがスレッド間で共有されます。ThreadLocal が使用されていても、各スレッドの HttpSession から取得されるのは同じインスタンスです。これは、スレッドが実行されているコンテキストを一時的に変更したい場合に影響します。SecurityContextHolder.getContext() を使用し、返されたコンテキスト オブジェクトで setAuthentication(anAuthentication) を呼び出すと、同じ SecurityContext インスタンスを共有するすべての同時スレッドで Authentication オブジェクトが変更されます。...

SecurityContextPersistenceFilter の動作をカスタマイズして、リクエストごとにまったく新しい SecurityContext を作成し、あるスレッドの変更が別のスレッドに影響を与えるのを防ぐことができます。

問題は、SecurityContextPersistenceFilter の動作をどのように変更するかということです。

セキュリティ コンテキストを http セッションに関連付けないようにしたいのですが、CSRF 保護などを実装したいので、セッション作成ポリシーをステートレスに設定したくありません。