問題タブ [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 - SpringSecurityを使用したOAuth2.0でのresourceIdの意味
org.springframework.security.oauth2.provider.filterのOAuth2ProtectedResourceFilter:
役に立たないと思います。このコードは何をチェックしますか?
spring-security - Spring securityoauth2の簡単な例
私は公式チュートリアルSparklr2/Tonr2に基づいて自分の例を実装しようとしています。すべてが良さそうに見えますがweb.xml
、Tonr2実装で削除すると、スプリングセキュリティフィルターに例外があります。
現在のリクエストに対してリダイレクトURIが確立されていません
どのURLを使うべきかわかりません。クライアント実装用の私のコードは次のとおりです。
そしてプロバイダーの場合:
クライアントに春のセキュリティなしで動作させたいだけです。また、保護されたリソースが必要な場合は、プロバイダー側でのみログインしたいと思います。
java - 春のセキュリティですべてのリクエストでOAuth2トークンを更新できますか/すべきですか
ユーザー名とパスワードの許可を使用して、JS クライアントを REST サーバーに接続します。ある意味では、oauth/token によって返されるトークンは私たちのセッションであり、限られた時間だけバックエンドへのアクセスを許可します。
トークンを使用してバックエンドにリクエストを行うたびに、そのセッション/トークンを更新したいと考えています。
サーバーによって発行されたこの更新トークンがあることを知っており、期限切れになった後、それを使用してトークンを更新できます。
問題は、トークンの有効期限が切れた例外をキャッチし、トークンの有効期限が切れる前に再認証または更新をスケジュールすることをクライアントの責任にしたくないということです。セッションのように、トークンが限られた時間使用されなくなるまで、トークンをリフレッシュしたい。(また、すべての「データ」リクエストでリフレッシュリクエストを発行したくありませんが、読んだことは覚えていると思いますが、リフレッシュトークンは一度しか有効ではありません..?!)
春のセキュリティでそれを行う方法はありますか、それともトークンストアまたは選択した部分のカスタム実装を構築する必要がありますか?
私は本当に答えを見つけることができないので(したがって投稿)、考えています:理由はわかりませんが、これを行うのは賢明ではないかもしれません。トークンを盗むことができれば、リフレッシュ トークンも盗むことができます。ですから、そもそもリフレッシュトークンを持つ意味がよくわからないと思います..
編集
Luke Taylor の回答に応えて、ユースケースを明確にします。
- 人のようなアプリケーション データを保持する REST サーバーがあります。また、コンテンツ管理へのアクセスを提供し、クライアントが Facebook に投稿できるようにします。アプリケーションロジックとデータストレージをカプセル化します
- 独自のセキュリティ レイヤーを備え、クライアント資格情報フローを介して REST サーバー上のデータにアクセスするだけの本格的なクライアント アプリケーションが既に配置されています。クライアントサイドで決めたことを誰ができるか
- Facebook の連絡先アプリのように、クライアント資格情報を使用して REST サーバー上のデータにアクセスする中小規模のアプリケーションがいくつかあります。
- 現在、大きなクライアント アプリケーションが行うすべてのことを行うために REST レイヤーにアクセスする JavaScript のみを使用してクライアント アプリケーションを開発していますが、個々のユーザーを認証し、マルチテナントを許可する手段も提供する必要があります。したがって、この新しいクライアント アプリケーションは、ユーザー名とパスワードの許可を使用して認証し、メソッド レベルのセキュリティを使用してユーザーを承認します。
そのため、独自のセキュリティ機能を実行する信頼できるアプリケーションへの完全なアクセスを提供する必要がある REST サーバーがあり、同じサーバーが新しいマルチテナント JavaScript クライアント アプリケーションのユーザーにアクセスを提供する必要があります。本番環境では、それぞれ独自のデータベースを持つ複数の REST サーバーがありますが、コアは常に同じであるため、理論的には 1 つのサーバーですべてを処理できるはずです。
spring - Spring Security OAuth2 のユーザー名とパスワードの付与でリフレッシュ トークンを使用して新しいアクセス トークンをリクエストする
ユーザー名とパスワードの許可を使用して、認証サーバーからアクセス トークンを取得しています。ユーザーがログアウトするか、クライアント アプリを閉じるまで、提供された更新トークンを使用して、有効期限が切れる前にアクセス トークンを更新します。
ただし、この更新トークン要求を発行する方法の例が見つかりません..
トークンを取得するには、次のように呼び出します。
更新するために、呼び出しは次のようになると思います。
または多分
しかし、それは私に401を与えるだけです..
そうそう、たぶん clientId を追加する必要がありますか? クライアント シークレットがないため、使用できません (トークンを取得するための上記の要求を参照してください)。結局、認証はユーザー名とパスワードを使用して行われます..
サーバー構成は正しいと思うので、ここには投稿しません。私のサンプル リクエストの 1 つが機能し、重要な構成部分を確認する必要がある場合は、それらを追加します。
ありがとう!
java - Spring Security OAuth2 サーバー側、すべてのリクエストで client_id と client_secret を要求する方法
私は Spring Security OAuth2 と統合していますが、すべてのリクエストで client_id と client_secret を要求することに固執しています。すべてのリクエストで access_token、client_id、client_secret を要求したいのですが、それは可能ですか?
java - 異なるドメインで実行すると、Cloudfoundry UAA リソース アプリ (/api) へのアクセスが拒否されました
localhost:8080 で /api と /app を使用して /uaa を実行しても問題はありませんでした。認証コード フローと暗黙的フローの両方が問題なく機能します。
ただし、すべてのアプリを同じドメインで実行するのは現実的ではないことがわかったので、別のドメインでテストすることにしました。私がしたことは次のとおりです: - localhost:8080 で /uaa を起動します - localhost:8181 で /api を起動します - localhost:8282 で /app を起動します - すべての URL 構成を正しいアドレスを指すように変更します
認証フローは引き続き正常に機能しました。ただし、暗黙的なフローで JavaScript エラーにつながる Access Denied が発生しました。
/app が /api に接続しようとすると、/api はこれをスローします。
/api は、匿名ユーザーしか取得していないため、認証コンテキストからユーザー marissa の ID を取得できないようです (localhost で 3 つのアプリすべてを実行すると、「セキュリティ http セッションから取得された marissa」と表示されます)。
異なるドメインで UAA とそのサンプルを構成する正しい方法は何だろうと思っています。
oauth-2.0 - spring security oauth 2 の暗黙的なフローでアクセス トークンを取得する方法
暗黙的な呼び出しで json 応答としてアクセス トークンを取得する方法。 spring-servlet に追加する必要があるカスタム フィルターは何ですか?
spring - Spring Social で残りの認証を行うには?
Spring セキュリティの例で概説されているように (および spring security java config を使用して)、Spring Social + Spring Security を実装しました。当時、いくつかの問題を報告しました ( https://jira.springsource.org/browse/SEC-2204を参照)。これらはすべて解決され、セキュリティは正常に機能します。
ただし、セキュリティの実装を変更し、RESTful 認証を使用したいと考えています。Spring oauth/oauth2 ( http://projects.spring.io/spring-security-oauth/ ) はこの問題を解決しますが、Spring Social がその状況にどのように適合するかわかりません。Spring ソーシャルは裏で oauth を使用して Facebook/Twitter と対話しますが、Spring ソーシャルのサインアップ フォームやその他の特性は安らかな API 用に構築されているとは思いません。
例やアイデアは間違いなく役に立ちます。
この投稿の更新: (2014 年 4 月 6 日)
- API を使用する (PHP) サイトを構築しました。
- この php サイト (クライアント サイトと呼びましょう) は、Facebook PHP SDK を使用して独自のユーザーを登録します。これは、独自のメンバーを収集するための完全に別の方法です。
- ただし、ユーザーが登録されると、クライアント サイトはユーザー名、電子メール、パスワード、名、姓のデータを client_id およびクライアント シークレットと共に渡し、OAuth2 許可タイプ
client_credentials
認証を使用します。 - この渡されたユーザー データにより、メイン システムにユーザー レコードが作成されます。(主な用途)
- この後、クライアント サイトが OAuth2 グラント タイプ パスワードを介してメイン システムを呼び出し、
client_id
、client_secret
、ユーザー名とパスワードを送信するたびに、「認証トークン」を取得し、このトークンを使用してメイン サイトと通信できるようになります。
長い道のりのように思えますが、ユーザー レコードをメイン システムに保持するという問題を解決します。これを行う他の方法があるかどうか興味がありますか?お知らせ下さい。