ネットの7 webapp Dockerのhttps、azure広告によって確保
私は認めなければなりません、これは奇妙で厳しいものでした.私がしたかったすべては、ASPを走らせることでした.HTTPSとAzureアクティブディレクトリ認証を使用してコンテナ内のネットかみそりページのアプリ.さて、これは間違いなく楽しいものだった.このブログ記事では、次の手順を正確に説明します エクスポート.docdevで使用するnet dev certs Azure AD認証の構成 クッキーポリシーを設定します.ネット devのcertsを使用するようにDockerを設定します
Dockerとhttpsでローカルdevで動作できるようにするには、証明書が必要です.そして、CERTを得る最も簡単な方法は、.NET dev - certs -彼らは無料で利用可能です.
お好みの端末を開き、次のように入力します
デフォルトでは、ASP .ネットコアのウェブサイトは、HSTSとHTTPSリダイレクションを有効にします.これは、アプリケーションの実行時に、TLS対応ポートへのすべての要求をリダイレクトし、リダイレクトすることを意味します.私は、標準に私のものをセットするのが好きです
マイクロソフト.アイデンティティ.ウェブ マイクロソフト.アイデンティティ.ウェブUI に
お使いのソリューションでクッキーを使用する場合は、クッキーポリシーを追加する必要があります.イン
以下のようにクッキーのエラーを取得する場合は、正しい設定を確認してください.すべてをチェックしてみてください.
Dockerとの作業に関しては、Linuxコンテナを使いたいなら、Dockerデスクトップをインストールし、WSL 2を有効にする必要があります.これらを正しくインストールするようにしてください.
Dockerファイルを作成するとき、私は私のための重いリフティングを行うためにVSのコードに傾くことが好きです.あなたのASPのものを設定する方法に関する情報を見つけることができます.ネットアプリhere
VSコードパレットから適切なDockerコマンドを実行するには、次の3つのファイルを生成します. Dockerfile Dockerの作成気象研 Dockerの作成デバッグ.気象研 私の左
そしてこれはすべてのエンドツーエンドで動作する例です
コマンドラインからコンテナーを実行する場合は、使用するコマンドです
あなたが質問をするならば、手を伸ばしてください!
エクスポート.NET dev - certs
Dockerとhttpsでローカルdevで動作できるようにするには、証明書が必要です.そして、CERTを得る最も簡単な方法は、.NET dev - certs -彼らは無料で利用可能です.
Note: this should only be used for local Dev to unblock certain scenarios
お好みの端末を開き、次のように入力します
dotnet dev-certs https --clean
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p <your secret>
### If you're using PowerShell, then you have to use the following command instead
dotnet dev-certs https -ep $env:USERPROFILE\.aspnet\https\aspnetapp.pfx -p <your secret>
dotnet dev-certs https --trust
ASPを構成します。NETコアWebアプリ
デフォルトでは、ASP .ネットコアのウェブサイトは、HSTSとHTTPSリダイレクションを有効にします.これは、アプリケーションの実行時に、TLS対応ポートへのすべての要求をリダイレクトし、リダイレクトすることを意味します.私は、標準に私のものをセットするのが好きです
5001
以来.NET 6と7は、アプリケーションのポートをランダムになりました.場合は、デフォルトのポートを変更することができますProperties\launchSettings.json
ファイル.これは私の見たものです.{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:43362",
"sslPort": 44382
}
},
"profiles": {
"AzureADAuthInDocker": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "http://localhost:5000;https://localhost:5001",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
必要な認証を実装するには、次のnugetパッケージを追加する必要があります.appsettings.json
ファイルを追加します."AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "<your Azure AD tenant name>.onmicrosoft.com",
"TenantId": "<your Azure AD tenant ID>",
"ClientId": "<your Azure AD App Registration client ID>",
"CallbackPath": "/signin-oidc"
},
更新program.cs
次のコードを追加しますbuilder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd"));
builder.Services.AddAuthorization(options =>
{
// By default, all incoming requests will be authorized according to the default policy.
options.FallbackPolicy = options.DefaultPolicy;
});
builder.Services.AddRazorPages()
.AddMicrosoftIdentityUI();
// code ommitted
app.UseAuthentication();
app.UseAuthorization();
この時点で、アプリケーションをローカルで使用することができますdotnet run
そして、すべてが正しく構成されているならば、あなたはあなたの組織(Azure広告)アカウントで認証するよう求められるべきですクッキーポリシーの作成
お使いのソリューションでクッキーを使用する場合は、クッキーポリシーを追加する必要があります.イン
Program.cs
認証設定の上に次のコードを追加します.builder.Services.Configure<CookiePolicyOptions>(
options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
options.Secure = CookieSecurePolicy.Always;
});
それから、ちょうどapp.UseAuthentication()
これを追加する必要があります.app.UseCookiePolicy();
アプリケーションを実行し、すべての作業を期待通りにテスト!以下のようにクッキーのエラーを取得する場合は、正しい設定を確認してください.すべてをチェックしてみてください.
当社のWebアプリのための設定Docker
Dockerとの作業に関しては、Linuxコンテナを使いたいなら、Dockerデスクトップをインストールし、WSL 2を有効にする必要があります.これらを正しくインストールするようにしてください.
Dockerファイルを作成するとき、私は私のための重いリフティングを行うためにVSのコードに傾くことが好きです.あなたのASPのものを設定する方法に関する情報を見つけることができます.ネットアプリhere
VSコードパレットから適切なDockerコマンドを実行するには、次の3つのファイルを生成します.
Dockerfile
ほとんどは変更されませんでした.http://+:5000;https://+:5001
マイdocker-compose.yml
ファイルは以下のようになります:version: '3.4'
services:
azureadauthindocker:
image: azureadauthindocker
build:
context: .
dockerfile: ./Dockerfile
ports:
- 5000:5000
そして最後に、変化の大部分はdocker-compose.debug.yml
# Please refer https://aka.ms/HTTPSinContainer on how to setup an https developer certificate for your ASP .NET Core service.
version: '3.4'
services:
azureadauthindocker:
image: azureadauthindocker
build:
context: .
dockerfile: ./Dockerfile
ports:
- 5000:5000
- 5001:5001
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:5001;http://+:5000
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
- ASPNETCORE_Kestrel__Certificates__Default__Password=<your secret>
volumes:
- ~/.vsdbg:/remote_debugger:rw
- C:\Users\chmatsk\.aspnet\https:/https/:ro
これらの変更で、私は直接私のWebアプリを直接のコードからDockerの内部を実行することができます.そしてこれはすべてのエンドツーエンドで動作する例です
コマンドラインからコンテナーを実行する場合は、使用するコマンドです
docker run --rm -it -p 5000:5000 -p 5001:5001 -e ASPNETCORE_URLS="https://+:5001;http://+:5000" -e ASPNETCORE_HTTPS_PORT=5001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="<your secret>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -v C:\Users\chmatsk\.aspnet\https:/https/ <your image>
このコマンドを実行すると、次の出力が生成されます.https://localhost:5001
あなたが質問をするならば、手を伸ばしてください!
Reference
この問題について(ネットの7 webapp Dockerのhttps、azure広告によって確保), 我々は、より多くの情報をここで見つけました https://dev.to/425show/net-7-webapp-with-https-in-docker-secured-by-azure-ad-2nnaテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol