3

複雑な答えを指摘するかもしれない簡単な質問があります:(

私は正常に動作するWeb APIを持っています。しかし、今は認証/承認を設定したいと思っています。すべてのプラットフォームで動作する必要がありますが、主に jQuery からです。当然のことながら、次のようなプレーン テキストでパイプラインに沿ってユーザー名とパスワードを送信したくありません。

function GetAllCategories() {
    var credentials = $.base64.encode('r3plica:mypassword');
    var authType = "Basic " + credentials;

    $.ajax({
        url: "http://localhost:18904/api/Categories",
        type: "GET",
        beforeSend: function (xhr) {
            xhr.setRequestHeader("Authorization", authType);
        },
        success: function (data) {
            alert('Success!');
        },
        error: function () {
            alert('error');
        }
    });
}

だから私は他の選択肢を見てきました。3 レッグ OAuth を使用する唯一の代替手段はありますか? クエリ文字列のキー/値を API に渡してすべてを処理させたいと思っていましたが、それを行うための段階的なプロセスが見つかりません。すべてがとても複雑に見えます。

それで、誰か私ができることを知っていますか?私は負荷を読み、負荷を実装しようとしました。

私はこれを機能させることができました:http://codebetter.com/johnvpetersen/2012/04/04/moving-from-action-filters-to-message-handlers/ ただし、私が知る限り、文字列を暗号化する必要があります(username) を API に送信する前に公開鍵を使用すると、API は秘密鍵を使用して復号化し、認証します。

だから私の2つの質問は簡単です:)

  1. 上記のリンクを使用して、jQuery から簡単に呼び出すことができますか (つまり、サードパーティのライブラリを使用していません)。
  2. そうでない場合、jQuery.ajax 呼び出しから直接呼び出すことができるように API を保護する最善の方法は何ですか?

明確にするために、APIにSSLを使用しています

事前に乾杯、

/r3plica

4

2 に答える 2

2

Web サイト (ユーザーがソースコードを調べることができる場所) の場合、PHP を介して AuthenticationToken を生成し、それを JavaScript に入れます。トークンは、ページをリロードするたびに変更されます。

例えば:

<script type="text/javascript">var authToken = '<?=genToken();?>'</script>
[...]
$.ajax( [..]
    beforeSend: function (xhr) {
        xhr.setRequestHeader("ownToken", authToken);
    },

そのトークンサーバー側を確認してください。

于 2013-05-09T18:40:52.017 に答える