2017-01-18 9 views
1

コンテキスト: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を追加しました。

ここではそのスクリーンショットです: enter image description here

私は開発者ポータルに移動し、エンドポイントを表示すると、私は私の認証サーバの下にある「リソースonwerパスワード」を選択することができます。しかし、これを選択すると、私のクライアントIDではなく私のユーザ名とパスワードの入力だけが可能なポップアップが表示されます。

Azure API Managementを設定して、認証を設定するときに使用するクライアントIDをユーザーが指定できるようにするにはどうすればよいですか?または特定のAPIを呼び出すときにAPIを変更する必要がありますトークンを要求するのではなくリソースを使用しますか?

これは私が必要と思いますものです:

Screenshot of what I'm looking for.

答えて

0

POST本体にこれらの値を渡すために、あなたは「ポスト」に「基本」からのクライアント認証方法を変更する必要があります。出版社ポータルセキュリティへ

移動し、以下のようになりのOAuth2サーバーの設定を変更します。

enter image description here

+1

ねえケビン、応答に感謝します。私はそれを変更しましたが、私が必要とするものはまだ得られません。開発者がトークンを要求するときにクライアントIDを入力できるようにする必要があります。元の投稿を私が探しているもののスクリーンショットで更新しました。 – tarun713

関連する問題