2017-12-14 11 views
2

シナリオ:Auth0シングルページアプリケーションクライアント。このクライアントを使用するように構成された.NET Web APIおよびAngular SPA。よく働く。Auth0シングルページアプリケーション用のAzure API管理の設定方法

Azure API ManagementをAPIの前のレイヤとして追加したいと思います。管理ポータルにAPIを設定し、更新されたSPAでAPIを呼び出し、SPAからのテスト済みの呼び出しがうまく機能するようにしました。

ここでは、Developer PortalからAPI呼び出しを呼び出せるように、適切なセキュリティ設定でAPI管理ポータルを構成したいと考えています。私はこれをガイドとして使用しました[https://auth0.com/docs/integrations/azure-api-management/configure-azure]私がでてる

:開発者ポータルから

は、私は、認証タイプとして承認コードを選択しAuth0と成功のサインインプロセスを通過し、ベアラトークンを取り戻すことができます。しかし、APIを呼び出すと、常に401が返されます。これを正しく設定する方法が混乱しているためです。どちらか

  • 1つのクライアントから生成されたトークンはするつもりはありませんので、私は命令とセットアップAuth0の新しいAPIクライアントに従いますが、その場合はその後、確かにそれを動作させるつもりはない。私はそれを理解したよう私のSPAクライアントとは何か?

  • または、SPAアプリケーションで動作するようにAzure API Managementを設定するにはどうすればよいですか? (これは私の好みの方法で、Auth0の2つのクライアントを '乱雑に見えるようにする')。しかし、認証エンドポイントのURLに「オーディエンス」の値を設定する必要はありませんか?それをどうやって得るのですか?

誰でもこれを行っていれば、ここでのいくつかの指針を高く評価するでしょう。

答えて

2

まあ、すぐに自分の質問に答えて戻ってくるとは思わなかった。その理由は、ほとんど私の一般的なこのことの無知に根ざして、事例を取って私のニーズに合わせて融合しようとすることにつながっています。ここに自分自身を見つける他の誰かを助けるためにこれを投稿してください。

Auth0でSingle Application Clientを使用し、Azure API Managementで動作させるのではなく、別の方法で、非対話型クライアントを自分のSPAで動作させることにしました。これは最終的にもっと正しいと感じました.APIは私が守っているものなので、API管理ポータルが機能するようにしてから、SPAを変更してAPIを操作する必要があります。

Auth0のクライアントで設定したオーディエンスと一致するようにAPIでオーディエンスを更新する必要があることを思い出した後、管理ポータルが機能し始めました。 APIを使用してSPAを動作させることは困難でした。auth0の角度コードを変更して、APIが送信したものと一致するようにオーディエンスを渡す方法を見つけようとしましたが、代わりにClientIDを送信し続けました。 (ところで、https://jwt.io/を使用して、ベアラトークンを復号化し、何が起きているのかを調べることで、すべてのことが分かりやすくなりました - オーディエンスのための 'aud'値を見てください。

最後に、 new JwtBearerAuthenticationOptionsオブジェクトでは、TokenValidationParametersオブジェクト(タイプTokenValidationParameters)にはValidAudiencesというプロパティがあります(はい、ValidAudienceというプロパティもあります)。これは複数のオーディエンスが参加できるため、ClientIDを追加しました。

私は、(確か、私には具体的であるかもしれないではない)に変更唯一の他の事は、私は私の非対話型クライアントのAuth0でJsonWebToken署名アルゴリズム値(高度な設定、OAuthのタブ)を変更しなければならなかったということですHS256からRS256へ

これで、API管理ポータルと私のSPAの両方からのリクエストが完了しました。

これが「正しい」方法なのか、ここで危険なものと思ったことがあるのか​​不思議に思う。

関連する問題