- Создание пула пользователей AWS Cognito
- Шаг 1: Настройте опыт входа в систему
- Шаг 2: Настройте требования безопасности
- Шаг 3: Настройте процесс регистрации
- Шаг 4: Настройте доставку сообщений
- Шаг 5: Интегрируйте ваше приложение
- Шаг 6: Обзор и создание
- Пулы пользователей
- Конфигурация приложения и создание сервера ресурсов
- Шаг 1: Создайте домен
- Шаг 2: Создать сервер ресурсов
- Шаг 3: Настройте клиентское приложение
- Создание API погоды
- Шаг 1: Создайте API
- Шаг 2: Добавьте пакеты NuGet
- Шаг 3: Настройте auth в Program.cs
- Шаг 4: Настройка конфигурационного файла
- Шаг 5: Добавьте атрибут authorize в конечную точку GetWeatherForecast
- Вызов API прогноза погоды с помощью Postman
- Шаг 1: Создайте новую коллекцию
- Шаг 2: Настройка авторизации коллекции
- Шаг 3: Вызов API Weather
Создание пула пользователей AWS Cognito
Перейдите на страницу сервиса AWS Cognito
Нажмите на кнопку создания пула пользователей
Шаг 1: Настройте опыт входа в систему
Выберите Email и нажмите далее
Шаг 2: Настройте требования безопасности
- В разделе политика паролей выберите cognito по умолчанию
- В разделе Многофакторная аутентификация выберите Нет MFA
- В разделе Восстановление учетной записи пользователя выберите Включить самообслуживание восстановления учетной записи, а затем Только электронная почта
- Нажмите далее
Шаг 3: Настройте процесс регистрации
Оставьте все значения по умолчанию и нажмите далее
Шаг 4: Настройте доставку сообщений
Выберите Отправить электронную почту с помощью Cognito и сохраните остальные настройки по умолчанию, затем нажмите далее
Шаг 5: Интегрируйте ваше приложение
- Настройте имя пула пользователей в соответствии с предпочитаемым соглашением об именовании
- Выберите Конфиденциальный клиент
- Настройте имя клиента приложения
- Нажмите далее
Шаг 6: Обзор и создание
- Просмотрите свою конфигурацию
- Нажмите Создать пул пользователей
Пулы пользователей
Просмотрите созданный пул пользователей
Конфигурация приложения и создание сервера ресурсов
Перейдите к созданному пулу пользователей
Перейдите на вкладку Интеграция приложений
Шаг 1: Создайте домен
- В разделе Домен нажмите на Действия, а затем нажмите на Создать домен Cogniro
- Введите уникальный префикс домена
- Нажмите Создать домен Cognito
Шаг 2: Создать сервер ресурсов
- Нажмите Создать сервер ресурсов
- Настройте имя и идентификатор сервера ресурсов
- Создайте пользовательские диапазоны для вашего приложения, которые будут использоваться при аутентификации
- Нажмите Создать сервер ресурсов
Шаг 3: Настройте клиентское приложение
- Выберите созданное приложение-клиент
- В разделе Размещенный пользовательский интерфейс нажмите кнопку редактировать
- В разделе Hosted sign-up and sign-in pages выберите пул пользователей поставщика идентификации cognito
- Выберите тип гранта Client Credentials OAuth 2.0 Grant
- Выберите пользовательский диапазон, который вы создали и хотите назначить приложению.
- Нажмите Сохранить изменения
Создание API погоды
Шаг 1: Создайте API
Создайте проект API, если у вас его еще нет.
Шаг 2: Добавьте пакеты NuGet
Добавьте следующие пакеты NuGet:
- https://www.nuget.org/packages/Amazon.AspNetCore.Identity.Cognito/
- https://www.nuget.org/packages/Microsoft.AspNetCore.Authentication.JwtBearer/
Шаг 3: Настройте auth в Program.cs
Добавьте этот блок кода в Program.cs в конструкторе.
builder.Services.AddCognitoIdentity();
builder.Services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.Authority = builder.Configuration["AWSCognito:Authority"];
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
ValidateAudience = false
};
});
Добавьте следующее под app.UseHttpsRedirection(); в Program.cs
app.UseAuthentication();
app.UseAuthorization();
Добавьте следующие use’ы в Program.cs
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.IdentityModel.Tokens;
После завершения работы ваш Program.cs будет выглядеть следующим образом.
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.IdentityModel.Tokens;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddCognitoIdentity();
builder.Services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.Authority = builder.Configuration["AWSCognito:Authority"];
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
ValidateAudience = false
};
});
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
app.Run();
Шаг 4: Настройка конфигурационного файла
Добавьте этот раздел в файл appsettings.Development.json
URL-адрес органа власти состоит из следующих строк
https://cognito-idp.{region}.amazonaws.com/{userpoolid}
"AWSCognito": {
"Authority": "[https://cognito-idp](https://cognito-idp/).{region}.amazonaws.com/{userpoolid}"
}
Вы можете найти идентификатор пула пользователей в AWS на странице Amazon Cognito в разделе пулов пользователей.
Шаг 5: Добавьте атрибут authorize в конечную точку GetWeatherForecast
В файле WeatherForecastController.cs добавьте атрибут Authorize к конечной точке GetWeatherForecast и добавьте Microsoft.AspNetCore.Authorization к использованию.
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace AWSCognitoWeatherAPI.Controllers
{
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[Authorize]
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
}
}
Вызов API прогноза погоды с помощью Postman
Шаг 1: Создайте новую коллекцию
- Создайте новую коллекцию для API
- Добавьте новый запрос в коллекцию для конечной точки прогноза погоды (https://localhost:7214/WeatherForecast).
Шаг 2: Настройка авторизации коллекции
- Нажмите на коллекцию API Weather Forcast и перейдите на вкладку Авторизация.
- В выпадающем списке Тип выберите OAuth 2.0
- В разделе Configure New Token (Настройка нового токена) дайте токену имя
- В раскрывающемся списке Тип гранта выберите Учетные данные клиента
- В разделе интеграции приложений пула пользователей в AWS получите url домена.
- Добавьте домен в раздел Access Token URL в postman и дополните его /oauth2/token
- Получите идентификатор клиента из клиентского приложения в AWS
- Получите секрет клиента из клиентского приложения в AWS
- Получите пользовательскую область видимости в Hosted UI
- Добавьте clientid, client secret и scope в postman.
- Нажмите получить новый токен доступа
- Нажмите использовать токен во всплывающем окне
- В запросе Weather Forecast на вкладке Authorization убедитесь, что Type установлен на Inherit auth from parent.
Шаг 3: Вызов API Weather
Нажмите отправить на запросе прогноза погоды, чтобы получить ответ от API.
Это так просто !🎉
Вы можете взглянуть на репозиторий ниже, чтобы найти полную кодовую базу.
https://github.com/Bassonrichard/AWSCognitoWeatherAPI