問題タブ [spring-security-oauth2]
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.
spring-security - OAuth2 スプリング セキュリティでヘッダーにトークンが渡されない場合、フィルター チェーンが継続するのはなぜですか?
次の構成xmlを使用して、春のセキュリティでOAuth2を使用しようとしています:
トークンの生成に成功しました。保護されたリソースにアクセスしようとしているときに、トークンをヘッダーに渡すと、すべて正常に動作します。しかし、トークンを渡さないと、セキュリティがバイパスされます。
OAuth2AuthenticationProcessingFilter のコードを確認しました。
トークンが存在しない場合、このフィルターがセキュリティをスキップするのはなぜですか? このケースを処理するには、他のフィルターを追加する必要がありますか?
spring - 404 oauth2 の承認が成功した後、URI を使用した HTTP 要求のマッピングが見つかりませんでした
Spring REST oAuth2 構成に問題があります。Springs は URL を認識してマップしますが、oauth2 セキュリティ チェック (成功) の後に、一致する URL がありません。しかし、Spring はアプリの初期化時にそれを認識しているため、その理由はわかりません。/oauth/token で適切に認証し、トークンを生成できます。トークンによる承認を必要としないリクエストを処理できません。
春 4.0.6、春セキュリティ 3.2.4、春セキュリティ oauth2 2.0.1
コンテキストの初期化からのログ
リクエスト送信後
そして構成
ユーザーコントローラーの一部
私が達成したいのは、すべてのリクエストを保護し、それらの一部のみが無料でアクセスできるようにすることです (または、client_id に一致する Authorization ヘッダーのみを使用する場合もあります)。
spring - 春の複数のソーシャルログイン
アプリの各部分に 1 つずつ、webapp に複数の WebSecurityConfigurerAdapter があり、動作が異なる複数の「FB/Google でログイン」ボタンが必要です。
WebSecurityConfigurerAdapter ごとに複数の SpringSocialConfigurers を構成しようとしましたが、一度に 1 つしか使用されないため、これは機能しないようです。
これを修正する方法についてのアイデアはありますか?
と
spring-security - Spring Security OAuth2 を使用して Spring Boot にカスタム BasicAuthenticationFilter AuthenticationProvider を登録する方法
環境
認証されたユーザーが、組織によって公開された API で使用するOAuth2 ベアラー トークンを作成できるようにするアプリケーションを開発しています。アイデアは、GitHub のPersonal API tokensと同様に、ユーザーがそのようなトークンを自己生成/取り消しできるようにすることです。その後、ユーザーは発行されたトークンを使用して、保護されたリソースへのプログラムによるアクセスを取得できます。この構成では、OAuth の「クライアント」、「認可サーバー」、「リソース サーバー」が組織に属します。今のところ、これらのサービスはすべて同じプロセスにあります。
この目的のために、私はResource Owner Password Credentials Grantタイプをサポートしようとしています。実装環境は以下で構成されます。
- スプリングブーツ
- Spring セキュリティ OAuth2
実装の制約の 1 つは、保存されているパスワードにアクセスできないことです。この処理は、実際の認証を行う内部 Web サービスに委任されます。
問題
保存されたパスワードにアクセスできないという制約があるため、構成されたデフォルトは使用できません。これは、プロバイダーの によって返されるオブジェクトDaoAuthenticationProvider
によって提供されるパスワードにアクセスする必要があるためです。UserDetails
UserDetailsService
AuthenticationProvider
これをカスタム実装に置き換える必要があると思います。ただし、そうしようとするすべての試みが効果を発揮するわけではないようです。
parent
以下は のリファレンスに正しく登録されているように見えますAuthenticationManager
が、実行時に委任されません (DaoAuthenticationProvider
優先されるため):
私が何をしようとしても(以下の参考文献を参照してください)、私は常に次の2つのプロバイダをメソッドで呼び出すProviderManager
ときに取得します:BasicAuthenticationFilter
Authentication authResult = authenticationManager.authenticate(authRequest)
doFilter
[ org.springframework.security.authentication.AnonymousAuthenticationProvider@366815e4, org.springframework.security.authentication.dao.DaoAuthenticationProvider@5da3e311 ]
AuthorizationServerSecurityConfigurer
これは'sclientCredentialsTokenEndpointFilter
メソッドの結果である可能性があると思います。ただし、このクラスはマークされfinal
ているため、カスタマイズできません。
提案や指針をいただければ幸いです。
資力
私が試した/研究したこと:
- http://projects.spring.io/spring-security-oauth/docs/oauth2.html#toc_7
- http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-change-the-authenticationmanager-and-add-user-accounts
- Spring Security 3.2: @Autowire は、Spring MVC アプリケーションの Java 構成とカスタム AuthenticationProvider では機能しませんか?
- カスタム フィルターで Java 構成を使用して AuthenticationManager を挿入する方法
- Spring Security と Java Config を使用したカスタム認証プロバイダー
- https://gist.github.com/SlyDen/9408539 -https://github.com/royclarkson/spring-rest-service-oauth/blob/master/src/main/java/hello/WebSecurityConfiguration.java
- https://github.com/spring-projects/spring-boot/blob/master/spring-boot-samples/spring-boot-sample-web-secure/src/main/java/sample/ui/secure/SampleWebSecureApplication.ジャワ
- https://github.com/spring-projects/spring-security-oauth/blob/master/samples/oauth2/sparklr/src/main/java/org/springframework/security/oauth/examples/sparklr/config/OAuth2ServerConfig.ジャワ
- https://github.com/spring-projects/spring-security-oauth/blob/6d9de66787cb60249f0de00ffe9075366a803924/tests/annotation/vanilla/src/main/java/demo/Application.java
- https://github.com/spring-projects/spring-security-javaconfig/blob/master/samples/oauth2-sparklr/src/main/java/org/springframework/security/oauth/examples/sparklr/config/SecurityConfiguration.ジャワ
oauth-2.0 - Spring Boot と Spring Security OAuth2 を使用して「パーソナル アクセス トークン」を実装する方法
認証されたユーザーが、組織によって公開された API で使用するOAuth2 ベアラー トークンを作成できるようにするアプリケーションを作成しようとしています。アイデアは、GitHub のPersonal API tokensと同様に、ユーザーがそのようなトークンを自己生成/取り消しできるようにすることです。その後、ユーザーは発行されたトークンを使用して、同じ組織によって公開されている保護されたリソースへのプログラムによるアクセスを取得できます。
このアプリケーションには次が必要です。
- ユーザーを認証し、ユーザーがトークンを生成および取り消すことができるようにする UI
- ユーザー認証とトークンの生成、取り消し、保存を可能にするサーバー側の RESTful API
理想的には、このアプリケーションはSPAを使用して、ステートレスでセッションを必要としません。
実装に関するいくつかの質問:
- 公開された API は、 Resource Owner Password Credentials Grantタイプ
@EnableAuthorizationServer
/oauth/token
を使用するエンドポイントにする必要がありますか? もしそうなら、クライアント資格情報を UIに公開するのは安全ではありませんか? これは回避できますか? - API は、直接呼び出す新しい専用エンドポイントを公開する必要があります
AuthorizationServerTokenServices
か? もしそうなら、これはどのように達成されますか? - Spring Boot と Spring Security OAuth2 を使用した参照実装はありますか?
任意の提案や参照をいただければ幸いです。
spring - Spring-security @PreAuthorize アノテーションと OAuth2 を使用して REST API を保護する
春のセキュリティ OAuth2 構成に苦労しています。
私は使用しています:
- Spring.version: 4.0.5.RELEASE
- Spring セキュリティ バージョン: 3.2.5.RELEASE
- Spring セキュリティ oauth バージョン: 2.0.2.RELEASE
- ジャージのバージョン: 1.18.1
Spring セキュリティの PreAuthorize アノテーションを使用して REST API を保護したいと考えています。ここで、メソッドへのアクセスを許可されているロールを定義します。
ロール「ROLE_ADMIN」を持つユーザーの有効なベアラー トークンを使用して API メソッドを呼び出すと、次の例外が発生します。
postman を使用すると、次のエラーの説明が表示されます。
これは私のセキュリティ設定です:
そして、これは私の web.xml 構成です:
spring - Spring OAuth2 - Authorization: Bearer でトークンを渡す
Request ヘッダーに oauth2 トークンを Authorization: Bearer として渡しています。ただし、たとえば Chrome 開発者ツールを使用すると、トークンを確認して基本的にコピーし、それを使用してサービスを呼び出すことができます。開発者ツールに表示されないように、トークンを防止/非表示にするにはどうすればよいですか。
java - Spring Security OAuth2 のアップグレード
Spring セキュリティ OAuth2 構成を 2.0.0.RC1 から 2.0.3.RELEASE にアップグレードしようとしています。当時、sprklrサンプルから構成をコピーして機能させました。したがって、xml ベースの Spring Security OAuth2 構成の実例に基づいています。
現在、Spring Security の最新リリース (この記事の執筆時点では 2.0.3) にアップグレードし、これを Java 構成に変換しようとしています。以下にxml構成とjava構成を投稿しています。
およびJava構成(これまで..)
これに関する詳細情報の追加 (Dave Syer の質問による)
トークンを生成しません。詳細については、以下を参照してください。
リクエスト:
応答:
{"error":"unauthorized","error_description":"SecurityContext で Authentication オブジェクトが見つかりませんでした"}
サーバーログ:
(10月14日更新)
Java セキュリティ構成。
spring - Spring oauth2 アクセストークンにコンテンツを追加するには?
oauth2 の仕様を正しく理解していれば、user_id などのカスタム コンテンツを oauth2 アクセス トークンに追加できるはずです。その後、サーバーはアクセス トークンをデコードし、ユーザー ドメイン オブジェクトを SecurityContextHolder に追加できます。
(もちろん、すべての REST API メソッドに user_id を追加することもできますが、これは多くのリファクタリングを意味します)
今マニュアルを読んで、TokenEnhancer を実装または拡張する必要があると思います。私はJavaScriptクライアントを使用しているので、JwtAccessTokenConverterを拡張する必要がありますか? 私はここで正しい道を進んでいますか?