16

OpenID 認証は、本質的にブラウザー ベースです。代替クライアントで使用するために OpenID ユーザーが API に対して認証できるようにしたい場合、そのために受け入れられているベスト プラクティスはありますか?

たとえば、ユーザーが自分の OpenID を使用して iPhone アプリにログインしようとした場合、それはどのように機能するのでしょうか? 彼らのためにある種のAPIトークンを生成し、ユーザーに手動でどこかに入力させることについて私が考えることができる唯一のこと。このアプローチはユーザーフレンドリーではありません。

これはBasecampのようなサイトが機能する方法ですが、それでも私には扱いにくいように思えます。

4

4 に答える 4

16

表示されている問題は、OpenID に固有のものではありません。パスワードを使用しない認証スキームでは、この問題が発生する可能性があります。OAuth ( http://oauth.net/ ) は、多くの Web サイトで急速に勢いを増しているオープン スタンダードであるソリューションです。ユーザーの認証方法とは完全に独立しているため、OpenID プロバイダーは、サイト (OAuth 用語では「サービス プロバイダー」) が OAuth を使用していることをサポートしたり、認識したりする必要はありません。API クライアントは Web ベースでも、ローカル アプリケーションでもかまいません。

プロセスは次のようになります。

役割:

  • ユーザー: あなたの Web サイトにアカウントを持っている人。
  • サービス プロバイダー: Web サイト。アクセスするには資格情報が必要なプログラム API があります。
  • コンシューマー: サービス プロバイダーの API へのアクセスを必要とするクライアント (Web またはローカル アプリケーション)。

フロー:

  1. ユーザーは消費者にいます。彼は、サービス プロバイダーのデータにアクセスしたいと述べています。
  2. ユーザーはリダイレクトされるか (コンシューマーが Web サイトの場合)、ブラウザーがポップアップし (コンシューマーがローカル アプリの場合)、サービス プロバイダーの Web サイトが表示されます。
  3. ユーザーは、永続的な Cookie を介して既にサービス プロバイダーにログインしているか、最初にサービス プロバイダーにログインする必要がありますが、それは行われます (この場合は OpenID)。
  4. 次に、サービス プロバイダーはユーザーに次のように尋ねます。
  5. ユーザーが確認すると、ブラウザ ウィンドウが閉じるか、消費者サイトにリダイレクトされます。
  6. なんらかの OAuth プロトコル マジックを介して、コンシューマーは秘密の資格情報を取得し、それを使用して API にアクセスしたり、承認したユーザーのプライベート情報にアクセスしたりできます。

明らかに、ここに OAuth 仕様全体を含めることはできませんが、上記から、これで問題が解決することが期待できます。OAuth ライブラリは、サポートを簡単に追加できるようにするために存在します。

ASP.NET を使用している場合は、http://dotnetopenid.googlecode.com/をお勧めします。これは、最近 OAuth サポート (v3.0 ベータ 1) が追加されたためです。

于 2009-02-17T03:50:08.607 に答える
4

OpenID も OAuth も、ユーザーの認証方法を定義しません。それらは、コンシューマーがユーザー エージェントを認証プロバイダーに送信する方法、ユーザー エージェントを戻す方法、およびユーザーが認証した ID をコンシューマーが検証する方法を定義します。

認証に使用される実際の方法は、両方のスキームの帯域外です。

OpenID と OAuth には違いがありますが、どちらもコンシューマーが HTTP リダイレクトとコールバック URL を使用する必要があります。どちらもブラウザベースです。アプリが HTTP を使用する場合、どちらも使用できます。ただし、要点は、ユーザーは信頼できるアプリに資格情報を入力するだけだということです。

于 2009-08-26T21:28:59.177 に答える
2

OpenIDではあなたが望むことは不可能です。OpenIDは、あなた(iPhoneアプリ)がユーザーについて知りたいだけで、OpenIDプロバイダーがユーザーを信頼しているという前提に基づいています。彼らは決してあなたに自分自身を認証しません。

優れたOpenIDプロバイダーは、実際には、認証プロセスを仲介することさえ防ぎます(これにより、ユーザーが攻撃を受ける可能性があります-あなたによる!):ユーザーが直接ログインし、紹介によるログインを拒否することを要求します。

于 2009-02-13T01:52:54.130 に答える
1

参照:この関連する質問

問題は、openid仕様にはプロバイダーとの認証に関する標準的な規定がないため、プロバイダーは電話などを介して認証が行われることを選択できることです。

うまくいけば、より多くのプロバイダーがOAuthを採用しています。または、いくつかの大規模なサイトの認証を手動でコーディングすることもできます。

于 2009-02-13T01:41:17.353 に答える