1719092986
2024-06-18 23:07:22
Amazon Cognito を使用すると、開発者はストレージ、管理、ユーザー認証を、数百万のユーザーに拡張できるマネージド サービスに委任できます。
このラボは、 AWS が提供するラボ 5 ワークショップの一環として .NET 開発者道場。 元の AWS ラボは ASP.NET Core 8.x バージョンを使用して構築されていたため、この新しいバージョンの背後にある動機は、ASP.NET Core 8.x バージョンをサポートすることです。 ASP.NET コア 3.1そのため、より新しいバージョンでは動作できなくなります。
ユーザーを認証、保存、管理するために Amazon Cognito ユーザープールを作成および設定するには、ラボの最初の部分に進みます。 .NET 開発者道場ラボ 5: Amazon Cognito による認証: ユーザープールの作成
このラボでは、Web アプリケーションを構成してデプロイします。 ASP.NET Amazon Cognito で認証するためのコア。
新しいプロジェクトを作成する ASP.NET コアウェブAPI
まず、新しいプロジェクトを作成します ASP.NET コア Web API。

必ず選択してください .NET 8.0 そしてへ Docker サポートを無効にする。

プロジェクトをコンパイルして実行します。 ブラウザに次の応答が表示されるはずです。

ポート番号に注意してください。Amazon Cognito 設定のポート番号と一致する必要があります。 https://localhost:7238/。 Amazon Cognito に戻って、 クライアントアプリケーション設定を構成する。
道路を確保する
ファイルを開く WeatherForecastController.cs そして次の変更を加えます。
次の使用説明を追加します
using Microsoft.AspNetCore.Authorization;
属性を追加する Authorize 方法に Get の WeatherForecastController :
[HttpGet(Name = "GetWeatherForecast")]
[Authorize]
public IEnumerableWeatherForecast> Get()
プロジェクトを再度実行します。 次のエラーが表示されるはずです認証スキームが指定されていませんでした :

Cognito を使用するように .NET Core を構成する
パッケージの追加 ヌゲット Microsoft.AspNetCore.Authentication.OpenIdConnect プロジェクトへ (を選択してください) バージョン 8.x プロジェクトに合わせて ASP.NET Core 8.x あなたが作成したもの):

開ける Program.cs 次の参照を追加します。
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
認証および認可サービスを構成する 電話をかけた直後に builder.Services.AddControllers(); :
builder.Services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect(options =>
{
options.ResponseType = builder.Configuration["Authentication:Cognito:ResponseType"];
options.MetadataAddress = builder.Configuration["Authentication:Cognito:MetadataAddress"];
options.ClientId = builder.Configuration["Authentication:Cognito:ClientId"];
});
ミドルウェアを追加する 認証を使用する リクエスト処理パイプラインで、UseAuthorization が UseAuthentication の後に来るようにします。
app.UseAuthentication();
app.UseAuthorization();
UseAuthorization()の後に定義する必要がありますUseAuthentication()。 これにより、望ましくない影響が生じる可能性があります。 自分で確認できます。
構成 : 構成キーが以下であることを確認します。
Authentication:Cognito:ResponseType、Authentication:Cognito:MetadataAddress、などAuthentication:Cognito:ClientIdファイルに存在します
appsettings.jsonまたは別の適切な構成ソースで。
開ける appsettings.json セクションを追加します Authentification 次 :
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"Authentication": {
"Cognito": {
"ClientId": "" ,
"IncludeErrorDetails": true,
"MetadataAddress": "https://cognito-idp..amazonaws.com//.well-known/openid-configuration" ,
"RequireHttpsMetadata": false,
"ResponseType": "code",
"SaveToken": true,
"TokenValidationParameters": {
"ValidateIssuer": true
}
}
}
}
プールID セクションで入手可能です ユーザープールの概要 :

クライアントアプリID 列の中にあります クライアントID :

プロジェクトを実行すると、デフォルトのユーザー登録/ログイン フォームにリダイレクトされるはずです。 学んだ上で :

アカウントを作成し、確認コードまたは Amazon Cognito ダッシュボードを使用して確認します。
登録すると、エンドポイントにリダイレクトされます。 /weatherforecast 結果が表示されるはずです。 これは、認証に成功したことを意味します。

#ASP.NET #Core #用にワークショップが更新されました