コンテキスト:AzureのAPI管理OAuth 2.0のリソース所有者のパスワードのフロークライアントID
私のソフトウェアアプリケーションは、顧客がログインし、リソースの所有者のパスワードの流れで使用するための独自のクライアントIDを生成することができ、マルチテナントアプリケーションであり、 OAuthリクエスト。
OAuth 2.0認証サーバーはWebAPIで構築されており、Microsoft提供のMicrosoft.Owin.Security.OAuth.OAuthAuthorizationServerProviderクラスの継承を受けています。 は現在、我々だけのように見えるトークン、取得するために一つのフロー(リソースの所有者のパスワード)をサポートしています。私たちは資格情報&クライアントIDを
POST /api/v1.0/token HTTP/1.1 Host: api.mysoftwareapp.com UserName={username}&Password={password}&grant_type=password&client_id={client_id}
を検証した後、我々はマイクロソフトによって生成されたアクセストークンを送り返します。 Owin.Security.OAuth.OAuthAuthorizationServerProvider基本クラス。リソースにアクセスするためには、ユーザーは、ベアラトークンとしてAuthorizationヘッダーにaccess_tokenを提供する必要があります。クライアントIDは再度渡す必要はありません。以下の例:テストコールを行うときに
GET /api/v1.0/Partners HTTP/1.1 Host: api.mysoftwareapp.com Authorization: Bearer this_is_where_the_token_goes
私はアズールのAPI管理の開発者ポータル機能を実装し、私の顧客が入力し、自分のユーザー名、パスワード、およびクライアントIDのことができるようにすることを可能にしたいのですがそのため、テナントの状況でデータを取得します(最終的には、クライアントIDによるレート制限を有効にします)。出版社のポータルで
は、[セキュリティ] - > [OAuth 2.0の下に、私がしました:
- は唯一のリソースの所有者のパスワードの許可タイプをチェックします。
- 私の認証要求メソッドをPOSTとして指定しました。
- トークンエンドポイントURLを追加しました。
- 追加のbodyパラメータとしてgrant_type/passwordが追加されました。
- リソース所有者パスワードの資格情報をブランクのままにしておきます。
それらが必要だったので、私はまた、次のことをやったが、私はのみによるリソースの所有者のパスワードのフローをサポートするには適用されないと考えている、と私自身のアプリケーションを介してクライアントの登録を取り扱う:
- は私を追加しました承認エンドポイントURL。
- クライアント認証方式として「In the Body」を選択しました。
- 偽のクライアントの資格情報を追加しました。
- 偽のクライアント登録ページのURLを追加しました。
私は開発者ポータルに移動し、エンドポイントを表示すると、私は私の認証サーバの下にある「リソースonwerパスワード」を選択することができます。しかし、これを選択すると、私のクライアントIDではなく私のユーザ名とパスワードの入力だけが可能なポップアップが表示されます。
Azure API Managementを設定して、認証を設定するときに使用するクライアントIDをユーザーが指定できるようにするにはどうすればよいですか?または特定のAPIを呼び出すときにAPIを変更する必要がありますトークンを要求するのではなくリソースを使用しますか?
これは私が必要と思いますものです:
ねえケビン、応答に感謝します。私はそれを変更しましたが、私が必要とするものはまだ得られません。開発者がトークンを要求するときにクライアントIDを入力できるようにする必要があります。元の投稿を私が探しているもののスクリーンショットで更新しました。 – tarun713