2017-02-14 3 views
5

httpトリガーを使用してC#Azure関数を作成したいとします。 API Keyでセキュリティを確保し、顧客ごとに個別の鍵を提供し、顧客固有のデータを提供して、誰がそれを呼び出すのかを識別する必要があります。Azure関数の顧客固有のAPIキーを構成する方法

AzureファンクションAPIキーを使用して顧客を識別できますか?渡されたキーの名前を取得しますか?あるいは、要求を認証するためにどの鍵が使用されたのか、紺色の機能の中で知る方法はありませんか?

GetApiKeyName()のようなメソッドがある場合は、データベース内の顧客のリストに対してキー名をチェックし、その関数を呼び出している人に基づいて異なるデータを返すことができます。例えば私が販売追跡システムを持っており、私の機能が/api/GetMonthlySalesであると想像してください。顧客1がAPIキーを使用してその機能を呼び出すと、毎月の売上を得るべきであり、顧客2がそれを呼び出すと、彼らは異なる金額を得るでしょう。

これが可能でない場合は、各顧客に、各機能呼び出しに渡すために追加の認証データを与える必要があることを意味します。顧客IDと秘密鍵を含む。しかしこれは、Azure関数APIキーを使用する目的に反するのですか?

同様のシナリオは、私が顧客の機能を呼び出すときに顧客に請求したい場合です。どの顧客が自分の機能と呼んでいるのかをどのように識別しますか?

+0

今のところ私はAzure認証*と*を使用して、同じapiキーをdbに入れました。次にAzureは、有効なキーを持つ人だけが関数を呼び出すようにしていることを知っています。そして、クエリ文字列の 'code'パラメータをつかんで、それをDBで見つけることで、その人を調べます。新しい顧客をプロビジョニングするには、それらをAzure Functionの認証に追加してから、自分のDBに追加する必要があります。うまくいけば、将来的にはこれについてのサポートが組み込まれていますが、あなたが顧客が少ない場合は、このように面倒ではありません。 – Rory

答えて

5

ロリー、

これは今日、残念ながらサポートされていません。認証は使用されたキーに基づいて行われ、個々のクライアントキーを取り消し/更新することはできますが、その情報は現在その機能に反映されていません。

管理APIを使用してキーをマッピングし、要求キーを照合してクライアントを特定するなどのいくつかの回避策がありますが、煩雑で非効率です。

私はこのhereを追跡する問題を抱えていましたが、すぐにこれを解決できるかどうかを確認するために、再度triage用にマークしました。

+0

Fabioに感謝します。利用可能な場合は非常に便利です。私は、APIキー管理のポータルサポートが好きです。たくさんのコードを書くことなくauthを簡単に設定できます。しかし、間違いなく認証は誰が認証されているかを識別できる必要があります。そうでなければ、ユースケースはかなり制限されています。 – Rory

関連する問題