タグ付けされた質問 「oauth」

OAuth(Open Authorization)は、クライアントアプリケーションがユーザーに代わって保護されたリソースにアクセスするための仕様です。ログイン資格情報をサードパーティのアプリケーションに渡すユーザーの代わりとして開発されました。


14
OAuth v2にアクセストークンと更新トークンの両方があるのはなぜですか?
ドラフトOAuth 2.0プロトコルのセクション4.2は、承認サーバーがaccess_token(リソースで自分自身を認証するために使用される)と、refresh_token単にを作成するためだけに使用されるを返すことができることを示していますaccess_token: https://tools.ietf.org/html/rfc6749#section-4.2 なぜ両方あるの?持っていないaccess_token限り、最後だけを作ってみませんか?refresh_tokenrefresh_token

10
OAuth 2とOAuth 1の違いは何ですか?
非常に簡単に言えば、誰かがOAuth 2とOAuth 1の違いを説明できますか? OAuth 1は現在廃止されていますか?OAuth 2を実装する必要がありますか?OAuth 2の実装はあまり見かけません。ほとんどはまだOAuth 1を使用しているため、OAuth 2を使用する準備ができているとは思えません。それは...ですか?

22
HttpClientの認証ヘッダーの設定
REST APIに使用しているHttpClientがあります。しかし、Authorizationヘッダーの設定に問題があります。ヘッダーを、OAuthリクエストの実行から受け取ったトークンに設定する必要があります。私は以下を示唆する.NET用のコードを見ました、 httpClient.DefaultRequestHeaders.Authorization = new Credential(OAuth.token); ただし、CredentialクラスはWinRTには存在しません。誰でもAuthorizationヘッダーを設定する方法について何かアイデアがありますか?

6
ASP.NET Web APIを保護する方法[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 3年前休業。 サードパーティの開発者がアプリケーションのデータにアクセスするために使用するASP.NET Web APIを使用してRESTful Webサービスを構築したいと思います。 OAuthについてはかなり読みましたが、OAuthは標準のようですが、OAuthがどのように機能するか(そして実際に機能するか!) 実際にビルドして動作し、これを実装する方法を示すサンプルはありますか? 多数のサンプルをダウンロードしました: DotNetOAuth-初心者の観点からはドキュメントは絶望的です Thinktecture-構築できない 私はまた、(のような単純なトークンベースのスキームを示唆しているブログを見てきたこれを) -これは、車輪を再発明するように思えるが、それは概念的にはかなり簡単であるという利点を持っています。 SOにはこのような質問がたくさんあるようですが、良い答えはありません。 この空間で皆は何をしているのですか?

9
JWT認証とOAuth認証の主な違いは何ですか?
JWTを使用したステートレス認証モデルを備えた新しいSPAがあります。単純なトークンヘッダーの代わりにすべてのリクエストに対して「ベアラートークン」を送信するように依頼するなど、認証フローについてOAuthを参照するようにしばしば求められますが、OAuthは単純なJWTベースの認証よりもはるかに複雑だと思います。主な違いは何ですか、JWT認証をOAuthのように動作させる必要がありますか? XSRF-TOKENとしてJWTを使用してXSRFを防止していますが、それらを個別に保持するように求められますか?それらを分離しておくべきですか?ここでの助けは高く評価され、コミュニティのための一連のガイドラインにつながるかもしれません。

5
「暗黙的」フローがうまく機能しているのに、OAuth2に「承認コード」フローがあるのはなぜですか?
「暗黙的」フローでは、リソース所有者(つまり、ユーザー)がアクセス権を付与した後、クライアント(ブラウザーなど)がアクセストークンを取得します。 ただし、「認証コード」フローでは、クライアント(通常はWebサーバー)は、リソース所有者(つまりユーザー)がアクセスを許可した後にのみ認証コードを取得します。次に、その認証コードを使用して、クライアントはAPIをもう一度呼び出し、client_idとclient_secretを認証コードとともに渡して、アクセストークンを取得します。ここですべてがよく説明されています。 両方のフローの結果はまったく同じです。アクセストークンです。ただし、「暗黙的」フローははるかに単純です。 質問:「暗黙的な」フローがうまく機能しているのに、なぜ「認証コード」フローに煩わされるのですか?ウェブサーバーに「暗黙的」も使用しないのはなぜですか? プロバイダーとクライアントの両方にとってより多くの作業です。

3
OAuth 2.0:利点と使用例—なぜですか?
誰もがOAuth2の何が良いのか、なぜそれを実装する必要があるのか​​説明できますか?私はそれについて少し混乱しているので私は尋ねます—これが私の現在の考えです: OAuth1(より正確にはHMAC)リクエストは論理的で、理解しやすく、開発しやすく、本当に安全です。 代わりに、OAuth2は認証リクエスト、アクセストークン、リフレッシュトークンをもたらします。セッションの開始時に3つのリクエストを作成して、必要なデータを取得する必要があります。それでも、トークンの有効期限が切れると、いずれかのリクエストが最終的に失敗します。 また、別のアクセストークンを取得するには、アクセストークンと同時に渡された更新トークンを使用します。それはセキュリティの観点からアクセストークンを無駄にしますか? さらに、/ r / netsecが最近示したように、SSLはすべて完全に安全なわけではないため、安全なHMACの代わりにすべてをTLS / SSLに取得しようとすると、混乱します。 OAuthは、100%の安全性ではないと主張していますが、公開して完成させています。これは、プロバイダーの観点からは、有望とは言えません。ドラフトが6つの異なるフローに言及しているときに、ドラフトが何を達成しようとしているのかを確認できますが、それは私の頭の中ではうまくいきません。 実際にそれを嫌うよりも、その利点と理由を理解するのが私の苦労かもしれないと思うので、これは少し不当な攻撃かもしれません、そしてこれが暴言のように思えるかもしれません。
256 oauth  oauth-2.0 

12
OAuth 2の暗黙的な許可タイプの目的は何ですか?
何らかの盲点があるかどうかはわかりませんが、OAuth 2仕様を何度も読み、メーリングリストのアーカイブをよく読みました。また、暗黙の許可の理由についてはまだよくわかりません。アクセストークンを取得するためのフローが開発されました。Authorization Code Grantと比較すると、それほど説得力のある理由もなく、クライアント認証をあきらめているようです。これはどのようにして(仕様を引用するために)スクリプト言語を使用してブラウザに実装されたクライアント向けに最適化されていますか? どちらのフローも同じように始まります(ソース:http : //tools.ietf.org/html/draft-ietf-oauth-v2-22): クライアントは、リソース所有者のユーザーエージェントを認証エンドポイントに送信することでフローを開始します。 認可サーバーは、リソースオーナーを(ユーザーエージェント経由で)認証し、リソースオーナーがクライアントのアクセス要求を許可するか拒否するかを確立します。 リソースの所有者がアクセスを許可すると、認証サーバーは以前に(リクエスト内またはクライアントの登録時に)提供されたリダイレクトURIを使用してユーザーエージェントをクライアントにリダイレクトします。 リダイレクトURIには認証コード(認証コードフロー)が含まれています リダイレクトURIには、URIフラグメントにアクセストークンが含まれます(暗黙的なフロー)。 ここで、フローが分割されます。どちらの場合も、この時点でのリダイレクトURIは、クライアントがホストするいくつかのエンドポイントに対するものです。 承認コードフローでは、ユーザーエージェントがURIの承認コードでそのエンドポイントに到達すると、そのエンドポイントのコードが、必要に応じて使用できるアクセストークンのクライアント資格情報と共に承認コードを交換します。たとえば、ページ上のスクリプトがアクセスできるWebページにそれを書き込むことができます。 暗黙的フローは、このクライアント認証ステップを完全にスキップし、クライアントスクリプトを含むWebページをロードするだけです。アクセストークンが過剰に渡されないようにするURLフラグメントには、ここにかわいいトリックがありますが、最終的な結果は基本的に同じです。クライアントがホストするサイトは、アクセストークンを取得できるスクリプトを含むページを提供します。 したがって、私の質問:クライアント認証手順をスキップすることで、ここで何が得られましたか?

28
Facebook OAuth「このURLのドメインはアプリのドメインに含まれていません」
最初に、この質問に対する回答をかなり長い間検索してきたと言いましょう... 自分のマシンでローカルに開発されているアプリケーションで動作するようにFacebook OAuthをセットアップしようとしています。Facebookの認証ですべてが完璧に機能していましたが、使用localhostから別のドメイン名(まだ私のマシンのローカル)に移動するまでは、次のエラーが発生します。 URLを読み込めません:このURLのドメインはアプリのドメインに含まれていません。このURLをロードできるようにするには、アプリのすべてのドメインとサブドメインをアプリ設定の[アプリドメイン]フィールドに追加します。 私のhostsファイルには127.0.0.1 photovote.dev (完璧に機能する)が含まれています 私のアプリでのリダイレクト(Socialiteを使用)は http://photovote.dev/auth/facebook/callback Facebookアプリの設定で... 私のアプリのドメインは photovote.dev 私のサイトのURLは http://photovote.dev/ 私の有効なOAuthリダイレクトURIは http://photovote.dev/auth/facebook/callback エラーメッセージが表示されたときのURLは次のとおりです。 https://www.facebook.com/v2.5/dialog/oauth?client_id=XXXXXXXXXXXXXXX&redirect_uri=http%3A%2F%2Fphotovote.dev%2Fauth%2Ffacebook%2Fcallback&scope=email&response_type=code&state=0ztcKhmWwFLtj72TWEMLDLD95MZZMZMZZMZM 私は何が問題なのか途方に暮れています... スクリーンショット1 スクリーンショット2

6
REST認証スキームのセキュリティ
バックグラウンド: REST Webサービスの認証スキームを設計しています。これは「本当に」安全である必要はありません(個人的なプロジェクトに近いものです)が、エクササイズ/学習体験としてできるだけ安全にしたいと考えています。面倒なこと、たいていの場合は設定にかかる費用が不要なので、SSLを使用したくありません。 これらのSOの質問は、私を始めるのに特に役立ちました。 RESTful認証 REST API / Webサービスを保護するためのベストプラクティス 最高のSOAP / REST / RPC Web APIの例は?そして、なぜあなたはそれらが好きですか?そして、それらの何が問題になっていますか? Amazon S3の認証の簡易バージョンを使用することを考えています(私はOAuthが好きですが、私のニーズには複雑すぎるようです)。リプレイ攻撃を防ぐために、サーバーによってランダムに生成されたnonceをリクエストに追加しています。 質問に行くには: S3とOAuthはどちらも、いくつかの選択されたヘッダーとともにリクエストURLに署名することに依存しています。どちらも POSTまたはPUTリクエストのリクエスト本文に署名しません。これは、URLとヘッダーを保持し、リクエストの本文を攻撃者が必要とするデータに置き換える中間者攻撃に対して脆弱ではありませんか? 署名される文字列にリクエスト本文のハッシュを含めることで、これを防ぐことができるようです。これは安全ですか?

4
アクセストークンの有効期限が切れるのはなぜですか?
Google APIとOAuth2を使い始めたばかりです。クライアントが私のアプリを承認すると、「更新トークン」と有効期間の短い「アクセストークン」が与えられます。これで、アクセストークンの有効期限が切れるたびに、更新トークンをGoogleにPOSTして、新しいアクセストークンを取得することができます。 私の質問は、アクセストークンの有効期限が切れる目的は何ですか?更新トークンの代わりに、長持ちするアクセストークンが存在しないのはなぜですか? また、更新トークンには有効期限がありますか? 参照アクセスGoogleのAPIへのOAuth 2.0を使用して GoogleののOAuth2のワークフロー詳細は。

9
正確にはOAuth(Open Authorization)とは何ですか?
正確にはOAuth(Open Authorization)とは何ですか? からいくつかの情報を収集しました OAuth Twitterチュートリアル:OAuthとは何ですか? OAuthとは しかし、私はもっと学び、知りたいです。ライフサイクルに関する情報を探しています。ソーシャルネットワークのほとんどがこのオープンプロトコルに依存しているのはなぜですか? 近い将来、さまざまなテクノロジ(ASP.NETなど)でデファクトになりますか?
201 oauth 

5
モバイルアプリケーション用のAPIの作成-認証と承認
概観 アプリケーション用の(REST)APIを作成しようとしています。最初の/主な目的は、モバイルアプリ(iPhone、Android、Symbianなど)による使用です。私は(他の実装を研究することにより)WebベースのAPIの認証と承認のさまざまなメカニズムを調べてきました。基本的な概念のほとんどに頭を抱えていますが、まだいくつかの領域でガイダンスを探しています。私がやりたい最後のことは、ホイールを再発明することですが、自分の基準に合う標準的な解決策を見つけることができません(ただし、自分の基準を誤解しているので、遠慮なく批評してください)。さらに、私はそれを消費するすべてのプラットフォーム/アプリケーションでAPIが同じであることを望みます。 oAuth それが提供される最初のソリューションである可能性が高いことを知っているので、私は先に進んでoAuthへの反対を捨てます。モバイルアプリケーション(または、より具体的には非Webアプリケーション)の場合、認証のためにアプリケーションを(Webブラウザに移動するために)残すのは間違っているように見えます。さらに、ブラウザーがコールバックをアプリケーション(特にクロスプラットフォーム)に返す方法はありません(私は承知しています)。私はそれを行ういくつかのアプリを知っていますが、それは単に間違っていると感じて、アプリケーションUXを中断させます。 必要条件 ユーザーはユーザー名/パスワードをアプリケーションに入力します。 すべてのAPI呼び出しは、呼び出し元のアプリケーションによって識別されます。 オーバーヘッドは最小限に抑えられ、認証の側面は開発者にとって直感的です。 このメカニズムは、エンドユーザー(ログイン資格情報が公開されない)と開発者(アプリケーション資格情報が公開されない)の両方に対して安全です。 可能であれば、httpsは必要ありません(決してハード要件ではありません)。 実装に関する私の現在の考え 外部の開発者がAPIアカウントをリクエストします。彼らはapikeyとapisecretを受け取ります。すべてのリクエストには、少なくとも3つのパラメータが必要です。 apikey-登録時に開発者に与えられる タイムスタンプ-特定のapikeyの各メッセージの一意の識別子としても機能します hash-タイムスタンプのハッシュ+ apisecret apikeyは、リクエストを発行するアプリケーションを識別するために必要です。タイムスタンプはoauth_nonceと同様に機能し、リプレイ攻撃を回避/軽減します。ハッシュは、リクエストが実際に特定のAPIキーの所有者から発行されたことを確認します。 認証済みのリクエスト(ユーザーに代わって実行されるリクエスト)の場合、私はまだ、access_tokenルートを使用するか、ユーザー名とパスワードのハッシュコンボを使用するかを決めていません。いずれにしても、ある時点でユーザー名とパスワードの組み合わせが必要になります。そのため、複数の情報(apikey、apisecret、timestamp)+パスワードのハッシュが使用されます。 この点についてフィードバックをいただければ幸いです。 ちなみに、私はパスワードをハッシュせずにシステムに保存しないので、最初にパスワードをハッシュする必要があります。 結論 ちなみに、これは、一般にAPIを構築/構造化する方法の要求ではなく、アプリケーション内からのみ認証と承認を処理する方法だけです。 ランダムな考え/ボーナスの質問 リクエストの一部としてAPIキーのみを必要とするAPIの場合、APIキーの所有者以外の誰かがAPIキーを(平文で送信されるため)表示し、過度のリクエストを行って使用制限を超えてしまうことを防ぐにはどうすればよいですか?多分私はこれを考えすぎているかもしれませんが、リクエストがapikey所有者に対して検証されたことを認証するための何かがあるべきではありませんか?私の場合、それはapisecretの目的でした。ハッシュ化されない限り、表示/送信されることはありません。 ハッシュといえば、md5対hmac-sha1はどうですか?すべての値が十分に長いデータ(つまりapisecret)でハッシュされる場合、それは本当に重要ですか? 私は以前、ユーザーごとのソルトをユーザーのパスワードハッシュに追加することを検討していました。それを行うとしたら、アプリケーションは、使用されるソルトを知らなくても、一致するハッシュを作成できるでしょうか?

5
CASまたはOAuthを使用したSSO?
シングルサインオンにCASプロトコルまたはOAuth +一部の認証プロバイダーを使用する必要があるのか​​と思います。 シナリオ例: ユーザーが保護されたリソースにアクセスしようとしましたが、認証されていません。 アプリケーションはユーザーをSSOサーバーにリダイレクトします。 認証されている場合、ユーザーはSSOサーバーからトークンを取得します。 SSOは元のアプリケーションにリダイレクトします。 元のアプリケーションは、SSOサーバーに対してトークンをチェックします。 トークンに問題がなければ、アクセスが許可され、アプリケーションはユーザーIDを認識します。 ユーザーはログアウトを実行し、接続されているすべてのアプリケーションから同時にログアウトされます(シングルサインアウト)。 私が理解している限り、それはまさにCASが発明したものです。CASクライアントは、認証サービスを使用するためにCASプロトコルを実装する必要があります。今、私はクライアント(コンシューマー)サイトでCASまたはOAuthを使用することを考えています。OAuthはCASのその部分の代替品ですか?新しい事実上の標準としてのOAuthを優先すべきですか?ユーザー名/パスワード、OpenID、TLS証明書などのさまざまな方法をサポートするCASの認証部分の使いやすい(Sun OpenSSOではありません!)置き換えはありますか? 環境: さまざまなアプリケーションがSSOサーバーの認証に依存し、セッションのようなものを使用する必要があります。 アプリケーションは、GUI Webアプリケーションまたは(REST)サービスにすることができます。 SSOサーバーは、ユーザーIDを提供する必要があります。これは、中央のユーザーインフォメーションストアからロールや電子メールなどのユーザーに関する詳細情報を取得するために必要です。 シングルサインアウトが可能である必要があります。 ほとんどのクライアントはJavaまたはPHPで記述されています。 OAuthの後継となる可能性のあるWRAPを発見しました。これは、Microsoft、Google、Yahooによって指定された新しいプロトコルです。 補遺 OAuthは、SSOを実装するために使用することもできますが、OpenIDのようなSSOサービスと一緒にのみ使用できるように認証用に設計されていないことを知りました。 OpenIDは「新しいCAS」のようです。CASにはOpenIDが欠落する機能(シングルサインアウトなど)がいくつかありますが、特定のシナリオで欠落しているパーツを追加することは難しくありません。OpenIDは広く受け入れられていると思います。OpenIDをアプリケーションまたはアプリケーションサーバーに統合することをお勧めします。CASもOpenIDをサポートしていることは知っていますが、CASはOpenIDを必要としないと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.