を呼び出すために、私は、この点になった:はHttpClientをいくつかのMicrosoftサンプル後アズールAD-保護されたサイト
ASP.NETコアのセットアップ:
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{
ClientId = Configuration["Authentication:AzureAD:ClientId"],
Authority = Configuration["Authentication:AzureAd:Authority"],
ResponseType = OpenIdConnectResponseType.IdToken,
AutomaticAuthenticate = true,
TokenValidationParameters = new TokenValidationParameters()
});
/AuthorizationTestエンドポイント:
[HttpGet]
[Authorize]
public IActionResult Get()
{
return Ok("SAMPLE TEXT - if you can read this then call it a day :)");
}
クライアント:
try
{
var result = await authContext.AcquireTokenAsync(WebApiResourceId, WebApiClientId, WebApiRedirectUri, new PlatformParameters(PromptBehavior.Auto));
authorizedClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
var authorizedMessage = await authorizedClient.GetAsync("/AuthorizationTest");
var statusCode = authorizedMessage.StatusCode.ToString();
var message = await authorizedMessage.Content.ReadAsStringAsync();
webBrowser.NavigateToString(message);
}
そしてauthorizedClientは次のように開始されます。
private static HttpClientHandler handler = new HttpClientHandler
{
AllowAutoRedirect = true,
CookieContainer = new CookieContainer(),
UseCookies = true
};
private static HttpClient authorizedClient = new HttpClient(handler, false) { BaseAddress = WebApiBaseUri };
私だけBASEADDRESSでそれを初期化するために使用され、後でここでSOの答えは次のハンドラを追加しました。
問題:私が正しくAADからトークンを取得していても
は、WEBAPIエンドポイントからの応答が(自動リダイレクト後の)HTMLがあるエラーとMSのログインページで、「あなたのブラウザはありますクッキーをブロックするように設定されています..... "
HttpClientを動作させるために何を変更する必要がありますか?または、Cookieを使用しないようにWebApiの設定を変更することはできますか?後者の選択肢では、私は他の選択肢を見つけることができませんでした。
Open ID ConnectではなくAzure ADベアラートークン認証を使用する必要があります。 Azure ADから得られるものはAPIに使用されるトークンですが、Open ID Connectミドルウェアはユーザ向けのアプリケーション用です(チャレンジを受け取った場合にサインインのためにユーザをAADにリダイレクトします)。 – juunas
@juunas私が見なければならないサンプル/パッケージはありますか? –
パッケージ「Microsoft.AspNetCore.Authentication.JwtBearer」が通常使用されていますが、サンプルAPI [here](https://github.com/Azure-Samples/active-directory-dotnet-native-aspnetcore/blob/)があります。マスター/ TodoListService/project.json)。 – juunas