Web API認証テクニック


26

人々のGetリクエストにxml / jsonを提供するasp.net MVC Webサービスフレームワークがありますが、ユーザーを認証するための最良の方法(javascriptまたはOO言語でコーディングするユーザーにとって高速、簡単、簡単)を見つけるのに苦労しています。データが機密であるなどということではなく、ユーザーに登録してもらい、変更を通知して使用状況を追跡するための電子メールアドレスを用意するだけです。

以前の試みでは、URIにユーザー名があり、ユーザー名が存在することを確認し、使用に応じてdbテーブルをインクリメントするだけでした。これは非常に基本的なことでしたが、ユーザー名などとしてデモを使用している人がいることに気付くので、もう少し洗練させる必要があります。

利用可能な認証技術は何ですか?主要なプレーヤーは何を使用/しますか。


「主要なプレーヤー」とは何ですか?いくつか例を挙げてください。その間、「主要なプレーヤー」API定義へのリンクを含めて、それらが何をするのかを確認してください。
-S.ロット

twitter / facebook / google / flickerを主要なプレーヤーと考えています。 developers.facebook.com apiwiki.twitter.com-
スティーブ

回答:


10

StackOverflowでその質問をしましたが、ここで読むことができます。私自身の質問に対する私の答えもご覧ください。これは、リクエストごとにパスワードを渡す必要がなく、SSLや暗号化を使用しない正確な認証です。単純なハッシュ。


私はあなたのソリューションが好きかどうかわかりません。
スティーブ

スティーブ:Flickrソリューションを使用

オープンソースのフリッカーソリューションがありますか、またはそれらのAPIを読んで理解する必要がありますか?
スティーブ

彼らのAPIを読んでください、それは非常に簡単です。SSLを使用していない場合、私の方法ほど安全ではありませんが、非常に良いです

あなたのmd5ソリューションは、「javascriptユーザーにとってささいな」法案に収まらないようです。flickr APIをさらに確認する必要があります。私はそれを見たが、いくつかの用語を勉強する必要がある。主にフロブとは何ですか。
スティーブ

3

このビデオは、WCF / RESTサービスでAPIキーを使用する興味深い方法です。コード


これは、ユーザーがAPIキーを呼び出すことを除いて、ユーザー名をサービスに入れることと同じ考えです。誰かがjavascriptの場合はページのソースを見て、キーをコピーして他の場所で使用できます。APIキーを有効にしてxyz.comから取得する必要があるように、APIキーを呼び出し側ドメインにリンクさせたいですか?
スティーブ

また、これは@KinGBinが示唆したものの複製ですか?
スティーブ

0

Visual Studioを使用してください。vs 2010で4.0フレームワークを使用している場合、vs 2010で「APIキー検証を使用したWCF RESTサービス」テンプレートを確認できます。


1
私はそれを調べなければなりません。個人的にはWCFから離れたいと思います。
スティーブ

これは興味深いものでしたが、クエリ文字列でAPIKeyを渡すだけのようです。これは、SSLを使用している場合でも、APIキーが呼び出し元と呼び出し先の間の誰にでも見えることを意味しませんか?
-JMarsch

0

Webサービスには常にHTTP認証を使用します。認証自体は、Webサーバー(場合によってはIIS)によって処理されます。次に、データベース、LDAPストアなどに対して認証するようにIISを構成します。

次に、プロパティUser.Identity.Nameを介してユーザー名にアクセスします。

編集:JQuery認証の例:

/* I found that providing the username and password both in the
   the arguments and in the url parameter seems to have better compatibility,
   if it works well for you, it is highly advisable to remove the 
   user/pass from the url */

function doLogin (){
  $.ajax({
    username: $('#username').val(),
    password: $('#password').val(),
    url: 'https://'+$('#username').val()+':'+$('#password').val()+'@api.example.com',
    dataType: 'jsonp',
    context: $('#result'),
    success: function(d) { $(this).html(d); $(location).attr('href','https://api.example.com/success'); }
    });
    return false;
}

javascriptクライアントでこれをどのように行いますか?
スティーブ

client = new XMLHttpRequest(); client.open(method、url、async、user、password);
-ewindisch

答えるjqueryの例を追加
-ewindisch

1
そのため、ユーザー名とパスワードの組み合わせは、ソース内にプレーンテキストで存在する必要があります。良い考えではないようです。
スティーブ

1
それでは、基本的に、ログイン画面にユーザー名/パスワードを入力して、APIリクエストを実行する必要がありますか?その解決策はひどいです。公開Webサイトのすべてのユーザーを登録する必要がありますか?
スティーブ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.