問題タブ [pre-authentication]
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 - Spring Security 動的アクセス評価者
Spring セキュリティが動的 URL 変更へのアクセスをブロックできるようにしてほしい
http://domain.com/ /** shareURL は ID です。問題は、shareID 1 でアクセスすると、プログラムはログインする必要があることを通知しますが (すべて OK)、ログインすると shareID を実行しようとします。 2、プログラムは私のセッションではないため、再ログインするように再度指示するはずですが、今..プログラムはこの共有IDへのアクセスを許可しています。
ログインせずにそのユーザーが共有IDを変更するのをブロックするにはどうすればよいですか?
特定の共有IDにパスワードが必要ない場合、スプリングセキュリティは認証をバイパスしてログインページを回避し、偽の認証を挿入するため、事前認証を使用しています。これなら一番の問題
ShareID 1 (パスワード不要) ShareID 2 (特定のパスワードが必要)
共有 1 (パスワードなしの自動ログイン) でログインすると、共有 ID 2 (ログインしているため) にアクセスできますが、それを行うべきではありません。
Spring-security.xml(問題の設定のみ)
-->
ユーザーがshareIDを変更した場合にログインが必要であることを春のセキュリティに伝える追加の構成が必要だと思います。たとえば、interceptor-urlの例に適切なメソッドを実装できる場合
intercept-url pattern="/share/**" access="hasRole('ROLE_SHARE') && sameShareIDLogged()"
私の悪い英語で申し訳ありませんが、私は今のところ勉強しています。
spring - Spring Security での @PreAutorize アノテーションの問題
@PreAuthorize
Spring Security 3 では動作しません。
これは私のコード スナップです。
奇妙なエラーが発生しています(添付ファイルを参照)
java - 認証シングルサインオン春
シングル サインオンのシナリオは次のとおりです。
- ポータル (http) で Web アプリのリンクをクリックすると、SSO 統合ページが表示されます。
- sso 統合ページがブラウザーにしばらく表示されます。その後、自動的に (http) 隠しフィールドを使用して Web アプリにデータを投稿します。
- Web アプリがリクエストを受け取り、リクエスト パラメーターからユーザー情報を抽出する
- Web アプリは sso 統合への Web サービス呼び出しを行い、ユーザーがアクティブかどうかを確認します
- 肯定的な応答を受信すると、Web アプリの表示ページ。
この関数をオーバーライドした春のセキュリティで AbstractPreAuthenticatedProcessingFilter を拡張する事前認証フィルターを使用しています。
関数 getUserName は、手順 3 と 4 を実行します。
Line 2 (Line 1 ではなく) を使用すると、すべてが正常に機能し、ユーザーは Web アプリのページを表示できます。行 1 を使用してデバッグすると、例外なく行 2 と同じようにユーザー名が抽出されますが、ユーザーは HTTP エラー コード 404 を取得します。行 3 では、両方のシナリオで同じ値が得られます。
なぜこれが起こっているのか、エラーはどこにあるのか、まったくわかりません。:(誰かが私を正しい方向に向けることができますか?
更新:私が受け取った Http 404 応答は次のようなものです。
また、ブラウザでページを更新すると、ユーザーはログインしてページを表示できます。更新の場合、jsessionid は url パラメータとして存在しませんが、2 行目を使用している場合、jsessionid は url パラメータとして存在しますか? 私はこの行動を理解することができません。
filter - ダイジェスト認証を使用した Spring Security カスタム事前認証フィルター
ダイジェスト認証を使用するアプリがあります。Digest メソッドに加えてカスタム HTTP ヘッダーをチェックして、認証プロセスをカスタマイズしたいと考えています。ヘッダーがリクエストに存在する場合、認証は以前と同様に続行する必要があります。存在しない場合、ユーザーは拒否されます。カスタムの事前認証フィルターを定義してこれを実行しようとしましたが、ダイジェスト フィルターと一緒に動作しません。
事前認証フィルターは成功しますが、まだ 401 の結果が得られます。
コメントを外せば
その場合、事前認証フィルターは無視されます。
authentication - 春のセキュリティで事前認証フィルターまたはフォームログインを介してログイン
私のウェブサイトにアクセスするための 2 つの方法がある方法を探しています。
1) form-login を使用して権限を取得し、Web サイトを使用できる必要があります。
2) 別の Web サイトにログインできるはずです。そこでトークンを使用してリンクを押すと、私の Web サイトにログインできるはずです。(私は両方の Web サイトを管理しており、同じデータベースを使用しています)
ステージ 1 が完了し、正常に動作し、ステージ 2 をこのhttps://stackoverflow.com/a/9919988/1915913に似たものにしました。これも機能しています。トークンを取得し、それを確認してログインすることができます.
しかし、私の問題は、同じリソースに対して、両方を同時に機能させるにはどうすればよいかということです。私は問題が何であるかを知っていると確信しています.カスタムフィルターを作成し、フォームログインフィルターを使用しようとしています. それはうまくいきませんが、できますか?または、この機能を取得できる他の方法はありますか?
これは、事前認証フィルターが引き継ぐように見える方法では機能せず、通常のログインを機能させることができず、プロジェクトの新しいページに移動するたびに事前認証フィルターを呼び出すようです。
これに使用するクラスはすべて非常に単純です。
私のセキュリティアプリコンテキスト:
ユーザー詳細サービス
}
私の事前認証フィルター
grails - Grails 事前認証シナリオ
Spring Security Core を使用して、事前認証済みのシナリオで Grails アプリを構成しようとしています。
そこで、カスタム認証フィルターを作成しました。
それを春に追加しました:
位置 PRE_AUTH_FILTER で BootStrap に登録しました。
Config.groovy には、標準の User、Role、および UserRole クラス名といくつかの staticRules しかありません。
フィルター内で、そのgetPreAuthenticatedPrincipal()
メソッドからあらゆる種類のものを返そうとしました: ユーザー ID、文字列としてのユーザー ID、そのユーザー名、ユーザー オブジェクト自体… リクエストごとにフィルターが呼び出されていることがわかります (これは私は、checkForPrincipalChanges = true
) を設定した後、何を返しても、現在のユーザーは匿名のままですspringSecurityService.principal
。__grails.anonymous.user__
ユーザーを既存のグループとロールで認証できるようにするには、セットアップで何を変更する必要がありますか? 追加の認証プロバイダーを書きたくありません。Grails の標準で問題ありませんdaoAuthenticationProvider
。フィルターから特定のものを返す必要がありますか? 他のSpringクラスをセットアップする必要がありますか?
java - Spring Boot で事前認証ヘッダーベースの認証を設定するには?
私のアプリは、Oracle Access Manager SSO からユーザー名を含む AUTH_USER リクエスト ヘッダーを取得します。Spring Security "Additional Topics" 2.2.1 には、必要と思われる "PreAuth" の例がありますが、完全に機能する例ではありません。
以下のスニペットは docs/examples からのもので、注釈ベースの構成が機能していません。
Siteminder の設定例 - RequestHeaderAuthenticationFilterとPreAuthenticatedAuthenticationProviderおよび UserDetailsService で XML を使用してユーザーを検索します。
これは Java ベースの構成にどのようにマップされますか?
Spring Security の事前認証の例では、まったく異なるセットアップが行われています (XML 構成はさらに威圧的です)。事前認証フィルターやヘッダー名の設定方法については言及されていません。
spring-boot-sample-web-secure は、WebSecurityConfigurerAdapter の代わりに WebMvcConfigurerAdapter を拡張し、基本的なフォームベースのログインのみを行い、事前認証 AUTH_USER ヘッダーからユーザー ID を取得する方法に関する情報はありません。
多くの参照/記事を読みましたが、それらは現在のコードと Spring-boot に関連していないようです。そのため、アプリの事前認証セキュリティを構成する方法を理解しようとして行き詰まりました。
spring-security - Spring Security - 事前認証 - DB で定義された承認とロールの設定
アプリケーションの認証は siteminder エージェントを介して行われますが、承認はアプリケーションを介して制御されます。
org.springframework.security.web.authentication.preauth.RequestHeaderAuthenticationFilter を使用してヘッダーをチェックしています。また、ユーザーの詳細をロードする UserDetailsService も定義しました。
また、Spring セキュリティ タグ ライブラリやその他の Spring メソッドを使用してロールを確認し、オプションを表示できるように、ユーザーのロールを設定する必要もあります。
これを実装するにはどうすればよいですか?
ユーザー詳細サービスの実装で以下のステートメントを試しましたが、うまくいかないようです。
AbstractPreAuthenticatedProcessingFilter クラスについても読みましたが、これはこの目的には役に立たないようです。
この問題に関するヘルプは非常に役立ちます。
ありがとう!
java - Spring Security HeaderPreAuthentication Principal が @AuthenticationPrincipal から解決されない
サードパーティの認証サービスによって処理される Web アプリケーションへの認証を備えた既存の Spring Boot アプリケーションがあります。SiteMinder と同様に、サード パーティ サービスは、HTTP 要求にヘッダー (たとえば、USER_HEADER) を挿入します。@AuthenticatedPrincipal
この HTTP ヘッダーを抽出し、結果の Auth オブジェクトを Spring Securityアノテーションを介して MVC レイヤーのコントローラーで使用できるように、既存のアプリを構成することを任されています。
前述のとおり、プロジェクトは Java 8 を使用したバージョン 1.1.9.RELEASE の Spring Boot アプリケーションです。
(以下に示すコードは、機能をミラーリングするテスト プロジェクトからのものです)
このアプリケーションは Java Config のみであることに注意してください。XML は許可されていません (リーダーからの命令)
Spring Security リファレンスやその他のさまざまな記事を掘り下げることで、a を使用しRequestHeaderAuthenticationFilter
てそれをフィルター チェーンに挿入し、リクエスト ヘッダーからユーザー名を取得する必要があることがわかりました。
フィルター:
ご覧のとおり、非常に基本的なフィルターです。
私が今持っているコードでは、ユーザーは HTTP 要求から抽出され、PreAuthenticatedAuthenticationToken がカスタム AuthenticationManager によって作成される PreAuthentication プロセスを通過し、User ビジネス オブジェクトがプリンシパルとしてトークンに挿入され、トークンは最終的にSecurityContextHolder.getContext().setAuthentication(principal); で SecurityContext に割り当てられます。
ただし、 Controller メソッドに で注釈を付けると@AuthenticationPrincipal User user
、返される User オブジェクトは null 化された User オブジェクトです。メソッド パラメータを に変更しAuthentication user
て明示的に呼び出すuser.getPrincipal()
と、ユーザー オブジェクトが正常に取得されます。@AuthenticationPrincipal がこのように失敗する理由はありますか?
ありがとうございます。詳細が必要な場合はお知らせください。