認可 も参照します.foo.com)は、バックエンドAPI(api.foo.com)でログインメソッドを呼び出します。 api.foo.comのloginメソッドは、ユーザーを認証し、その応答にJWTを発行します。 webapp.foo.comはこのJWTを使用してコントローラのアクションを認証します(トークンのクレームを使用する認可ポリシーを定義します)。トークンをfoo.api.comに渡すたびに、トークンを渡します。 webapp.foo.comとapi.foo.comの両方は、JWTのクレームセットに基づいて認可ポリシーを作成するだけで、トークンの使用を共有することができます。
api.foo.com
string jwt = xxx.yyy.zzz; //use the actual JWT returned from your login call
var client = new HttpClient("http://api.foo.com");
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", jwt); //add the JWT to the authorization header
var requestStr = JsonConvert.SerializeObject(new { myParam = viewModel.myParam }); //serialize the object you are passing as a parameter to api.foo.com as Json
HttpContent requestBody = new StringContent(requestStr, Encoding.UTF8, "application/json");
var response = await client.PostAsync("myController\\myAction", requestBody); //POST to api.foo.com (or whatever action you want to take)
response.EnsureSuccessStatusCode();
var resultstr = response.Content.ReadAsStringAsync().Result; //read the result as a string
dynamic resultObj = JsonConvert.DeserializeObject<dynamic>(resultstr); //if desired, deserialize it to an object (I just used dynamic as an example)
呼び出し "はどのようにAPIを使用するアプリケーションを許可については行くべき?"広い質問です。可能な答えが多すぎるか、この形式には長すぎると良い回答があります。回答セットを絞り込むか、いくつかの段落で回答できる問題を特定するための詳細を追加してください。 –
私はこれで誰かに返答しました。うまくいけば、これはそれを少し狭めます:あなたのポリシー認証の例を使用しましょう。別のWeb APIアプリケーションでは、そのポリシーをStartupで宣言し、いくつかのAPIメソッドを承認します。それは動作し、今すぐ "webapi.foo.com"で、素晴らしいホストされています。さて、別の新しいWebアプリケーションを作成し、そのAPIからいくつかのメソッドを使いたいとしましょう。だから私は私の質問は2倍だと思う: "webapi.foo.com"でそれらのメソッドを呼び出すにはどうすればいいですか?どうすれば私のアプリに許可されたメソッドを呼び出す権限があることを確認できますか? – Daath
承認されたフレームワークで相互に通信する必要のある多くのWebアプリケーションの開発が見込まれる場合は、他のWebアプリケーション、つまりIDプロバイダの認証管理だけを行うWebアプリケーションを開発することで利益を得ることができます。認証トークンまたはHMAC、または同じ機能を提供する他のメカニズムを実装することができます。 – boosts