問題タブ [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 - Spring Boot のデフォルト OAuthTokenEndpoint をオーバーライドする方法
私は、Spring Security Oauth を使用して Restful Service を保護することに取り組んできました。SSL を使用して /oauth/token エンドポイントを保護し、POST 呼び出しのみを許可しようとして頭を悩ませてきました。
私は @EnableAuthorizationServer を使用しています
DispatcherServlet コンテキストである必要がある現在のアプリケーション コンテキストで認可サーバー (つまり、AuthorizationEndpoint と TokenEndpoint) を有効にするための便利な注釈。サーバーの多くの機能は、タイプ AuthorizationServerConfigurer の @Beans を使用してカスタマイズできます (たとえば、AuthorizationServerConfigurerAdapter を拡張することによって)。ユーザーは、通常の Spring Security 機能 (@EnableWebSecurity など) を使用して認可エンドポイント (/oauth/authorize) を保護する責任がありますが、トークン エンドポイント (/oauth/token) は、クライアントの資格情報で HTTP 基本認証を使用して自動的に保護されます。1 つ以上の AuthorizationServerConfigurers を介して ClientDetailsService を提供することにより、クライアントを登録する必要があります。
これは素晴らしいことですが、intercept-url xml 構文のように、トークン エンドポイント部分をオーバーライドしたり、POST のみの呼び出しを強制したりすることはできないようです。
リソースサーバーを保護しました
requiresChannel を使用する Authorization Servers TokenEndpoint セキュリティ用の同様のビルダー構文はありますか?
spring-security - 2 つの異なるタイプの認証に対する Spring OAUTH2 の使用
REST Web サービスを保護するために、OAUTH2 トークン メカニズムを使用しています。単一のトークンジェネレーターで2つの可能な認証メカニズムを構成して検証する可能性はありますか?
- 認証 (ユーザー ID とパスワードに基づく)。
- 認証 (merchantId とパスワードに基づく)。
有効なトークンと認証されるユーザーを生成するために使用できるようにします。このタイプのメカニズムは、Web サービスを使用するモバイル ベースのレスト サービスと Web アプリケーションを保護するために必要です。間違っていれば正しい。
spring-security - Google ログイン用の Spring Security OAuth2 Java Config
Spring Security OAuth2 の作業中の XML 構成を Java 構成に移行し、OAuth プロバイダーとして Google を使用しています。
これは私のJava構成がどのように見えるかです:
CSRF を無効にしたことに注意してください。私のログインページから、ユーザーはGoogleログインページにリダイレクトされます
問題:-
- Google 許可ページは「オフライン アクセスを許可する」だけを求めます。「メール/プロフィール」アクセス リクエストがありません。
同等の「スコープ」属性 XML 構成:-
メールとプロファイルのアクセス許可を正しく要求します。なんで?
- とにかく「オフライン アクセスを使用する」を続行すると、次の例外が発生します:-
このコード ブロックを使用してユーザー プロファイルを取得しようとしているとき:
ログにこれを示すSpring RestTemplate:
この同じコードは、XML 構成を使用しているときに機能します。
更新 1
スコープを ' https://www.googleapis.com/auth/plus.profile.emails.read ' & ' https://www.googleapis.com/auth/に変更することで、「オフライン アクセス」の問題を修正できました。 plus.login '.
ユーザープロファイルを取得しようとしているときにまだ不正なリクエストエラーが発生しています
ここで問題のソース コードを見つけてください - git clone https://kumarsambhavjain@bitbucket.org/kumarsambhavjain/spring-oauth2-login.git
java - バージョン 2.0.+ のカスタム TokenGranter を使用した Spring Security OAuth2
以前のバージョンの OAuth2 では、要素の xml 構成に追加することで、カスタム トークン グランターを追加することができました<authorization-server>
。
AuthorizationServerConfigurerAdapter を使用して Java Config で認可サーバーを拡張するにはどうすればよいでしょうか。既定の構成には、暗黙的なクライアント資格情報、リフレッシュ トークン、認可コード付与タイプが含まれています。
最初の試みは、@Component を使用して TokenGranter を作成することでした。
これは、Granter を構築するために必要な tokenServices を自動配線できないため、依存関係解決の例外につながります。
2 回目の試行では configure メソッドを使用していました
これを使用すると、デフォルトの付与タイプは登録されません。
下位の次数で 2 番目の構成も試しましたが、成功しませんでした。カスタム許可タイプを追加するには、他に何ができますか?
spring - Spring oauth での ResourceServer の最小構成
Spring Security OAuth を使用するアプリを開発していますが、ResourceServerコンポーネントのみです。AuthorizationServer は別の製品であり、Spring OAuth とは関係ありません。Springのドキュメントにあるように、ResourceServer を構成するには、EnableResourceServer アノテーションを使用し、ResourceServerConfigurer を使用して構成を提供する必要があります。したがって、カスタム oauth サーバーに必要なのは、アクセス トークンによって認証情報をロードできるカスタム ResourceServerTokenServices を提供することだけです。
Spring Java docs によると、構成は ResourceServerConfigurerAdapter クラスを使用して行うことができます (この情報は Java docs にあります): http config + ResourceServerTokenServices impl を提供します。
私はこの設定を使用しようとしました:
しかし、この構成は機能しません。アプリを実行すると、例外が発生します
コンテキストで AuthenticationManager を明示的に定義すると
それをadaperに設定すると、すべて問題ありません。
しかし、ユーザーが認証マネージャーを提供しなかった場合、 ResourceServerSecurityConfigurer には既に authenticationManager を作成するコードがあるため、私には奇妙に思えます。
質問は次のとおりです。初期設定の何が問題になっていますか? コンテキストが適切に開始できない場合、Configurer の OAuthAuthenticationManager 作成コードの目的は何ですか?
spring - HttpMessageConverterExtractor.extractData() 呼び出し前の Spring OAuth2RestTemplate クローズ応答
RestTemplate クラスの doExecute() 内には、次のコードがあります。
OAuth2RestTemplate を使用する場合、ResponseErrorHandler は OAuth2ErrorHandler に設定されます。私の特定のユースケースでは、(oauth トークンを取得した後の) リクエストは、コード内で処理したい 400 エラーを返しています。そのため、何もしないように DefaultResponseHandler.handleError() をオーバーライドするカスタム ハンドラーを渡して OAuth2ErrorHandler を作成しました。これにより、RestTemplate.postForEntity() を呼び出すコードが ResponseEntity を取得できるようになり、それに対してさらに評価を行うことができます。
今私が見ている問題は、上記のコードの handleResponseError 内で、それが OAuth2ErrorHandler.handleError() に入り、そのコード内に次の注意事項があることです。
これは、OAuth2ErrorHandler がデリゲート errorHandler を呼び出したときにうまく機能します。これは、errorHandler が応答も読み取ることができるためです。残念ながら、そのメソッドが bufferedResponse を返すと、もはや利用できず、 responseExtractor.extractData(response) が呼び出されると、入力ストリームが閉じられます。
私が見ている例外は次のとおりです。
この問題を回避する方法はありますか? 私のユース ケースでは、OAuth2RestTemplate を使用して OAuth ハンドシェイクを処理し、ResponseEntity に対して独自のコード ロジックを実行できるようにしたいと考えています。
spring-security-oauth2 - 同時リクエストの春の oauth2 null ポインター
spring oauth2 (バージョン 1.0.4) を使用して oAuth サーバーをセットアップしました。クライアント認証情報付与タイプのアクセス トークンを取得しようとすると、複数の同時リクエストが行われると null ポインター エラーが発生します。
スタック トレースのスニペットを含めます。
リクエストは次のようなものです:
この問題は、単一のリクエストが行われた場合 (または同時リクエストの数が少ない場合) には発生しません。ある種の競合状態?
spring-security - OAuth2 とセッションベースの認証は Spring Security で共存できますか?
次のセキュリティアプリケーションコンテキストxmlでユーザー名とパスワード認証を使用して、セッションベースのログインにスプリングセキュリティを使用するWebアプリケーションがあります。
モバイル アプリ用に Web サービスを公開したいので、OAuth2 の実装を検討しています。github で提供されている例を読みました。
インターセプト URL パターンが両方のフローで同じであるため、これら 2 つのセキュリティ フローがどのように共存できるのか疑問に思っていました。