マシン: Windows サーバー 2016 (IIS 10)
フレームワーク: ASP.net コア 2.2、Web-Api
angular 8クライアント側を備えた単純なASP.NETコアWeb-apiサーバー側があります。アプリケーションは現在、ローカル IIS でホストされています。web-api には、認証属性のないエンド ポイントが含まれています。IIS 構成が匿名認証に設定されている限り、すべて正常に機能します。
IIS 認証をWindows 認証に設定すると (今後、Kerberos\AD 認証を必要とする他のエンドポイントで使用する予定です) 、同じエンドポイントに到達しようとするとエラー 401 unauthorizeが発生します。
私はそれを避ける方法が見つかりませんでした!!
Windows 認証が設定されている場合、エンドポイントに匿名で到達するにはどうすればよいですか?
エラーによると:「Webサーバーは匿名アクセス用に構成されておらず、必要な認証ヘッダーが受信されませんでした」-「withCredentials」:「false」でヘッダーを送信できますか-試してみましたが、役に立ちませんでした。
認証 -> Windows 認証の初期プロパティ:
拡張保護: オフ
カーネル モード認証を有効にする: true
これは私の web-api サンプル エンドポイントです。
[Route("dosomething")]
[HttpGet]
public IActionResult DoSomething()
{
...
}
クライアント側:
getData(): Observable<someModel>
{
return this.httpClient.get<someModel>(<url>)
.pipe(
tap(response =>
{
do something
}),
catchError(error =>
{
<doSomeErrorHandling>
return throwError(error);
})
);
}
アプリケーション プールは次のように定義されます。
.NET CLR バージョン:「マネージド コードなし」
マネージド パイプライン モード: 統合
アイデンティティ: ApplicationPoolIdentity