0

プロジェクト用の最初の RESTful API を開発しています。

Basic username:passwordユーザー名:パスワードが Base64 でエンコードされた形式を使用して、基本認証が適切に機能することを理解し、取得しました。

現在、「ユーザー名」フィールドにユーザーの電子メール アドレスを渡し、「パスワード」フィールドにパスワードを渡します。

問題は、電子メール アドレスがアプリケーション内で一意ではないことです。アプリケーション内の組織ごとに一意です。

したがって、ユーザーを正常にログインさせるには、組織が何であるかを示す別の値を API に渡す必要があります (組織を検索するために使用されるキーを渡すという考えになります)。

私の問題は、基本認証プロセスでは 2 つの値 (ユーザー名、パスワード) しか渡すことができないのに対し、私は 3 つを渡す必要があることです。基本認証プロセスにより多くのデータを渡す方法はありますか? または、これを達成するために他のタイプの認証を使用する必要がありますか?

私の考えは、基本認証を変更して、次のような 3 つの値を取るようにすることでした。 username:password:orgkey それが許可されているのか、それとも基本認証のプロトコルに違反しているのかわかりません。

この質問は実際には言語に依存しませんが、記録のために、Coldfusion と Taffy プラグインを使用しています。

任意のガイダンスをいただければ幸いです。

ありがとう

4

1 に答える 1

2

ここここの回答で説明しようとしたため、基本認証は Web API を保護するための適切なプロトコルではありません。

テストの自動化などをサポートするのは問題ありませんが、本番環境では使用しません。JavaScript もモバイル クライアントも信頼して秘密を保持できないため、パスワードを秘密に保つのは困難です。

電子メール アドレスが組織間で一意でない理由がよくわかりません。アットマーク('@')以降の部分を送信していませんか?

基本認証資格情報フィールドに別のフィールドを導入することはできません。RFC7235によると、資格情報フィールドには次のもののみを含めることができます。

    credentials = auth-scheme [ 1*SP ( token68 / #auth-param ) ]

JWTトークンを使用するようなセキュリティトークンベースの認証方式を検討します。

于 2015-08-01T02:24:09.643 に答える