Blazor Web App - Register and Login (Identity Server)

2023. 12. 18. 00:00ASPNET/Blazor

반응형

.NET 8 web api 에서 identity 기능을 활성화 하여 Identity Server 만들기

 기본 web api 를 생성 하고 다음 package 를 설치 합니다. 

dotnet add package Microsoft.AspNetCore.Identity.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.InMemory

 

MyUser 라는 자체 user class 를 위해서 IdentityUser 에서 상속 받습니다. 

class MyUser : IdentityUser {}

그리고 XXXDbContext 도 다음과 같이 상속 받습니다. 

class ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) :
        IdentityDbContext<MyUser>(options)
{
}

 

Program.cs

builder.Services.AddAuthorization();
builder.Services.AddDbContext<ApplicationDbContext>(
    options => options.UseInMemoryDatabase("AppDb"));
builder.Services.AddIdentityApiEndpoints<MyUser>()
    .AddEntityFrameworkStores<ApplicationDbContext>();
...
...
.WithName("GetWeatherForecast")
.WithOpenApi()
.RequireAuthorization();

app.MapIdentityApi<MyUser>();

 

자 이형태로 swagger 에서 테스트 가능하다

그런데 login 시 옵션중에 cookies 를 false 로 할 수 있다. 

이렇게 되면 token 형태로 인증 및 인가 처리가 가능하다.

 

swagger 에서 테스트 하기 위해서는 약간의 추가 코드가 필요하다. 

builder.Services.AddSwaggerGen(opt =>
{
    //opt.SwaggerDoc("v1", new OpenApiInfo { Title = "MyAPI", Version = "v1" });
    opt.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
    {
        In = ParameterLocation.Header,
        Description = "Please enter token",
        Name = "Authorization",
        Type = SecuritySchemeType.Http,
        BearerFormat = "JWT",
        Scheme = "Bearer"
    });
    opt.AddSecurityRequirement(new OpenApiSecurityRequirement
    {
        {
            new OpenApiSecurityScheme
            {
                Reference = new OpenApiReference
                {
                    Type=ReferenceType.SecurityScheme,
                    Id="Bearer"
                }
            },
            new string[]{}
        }
    });
});

 

위와 같이 추가 한 후 오른쪽 상단에 표시되는 자물쇠 를 클릭하고 login 으로 만든 token 을 입력해주면 된다. 

(따옴표 제외하고 복사해주길 바랍니다.!!)

 

 

 

 

관련영상

https://youtu.be/IIBhHPBLbfE

 

반응형

'ASPNET > Blazor' 카테고리의 다른 글

Blazor web app 렌더링 간 data 공유  (1) 2024.02.19
Blazor Web App - 렌더링 개념  (1) 2023.12.11
Blazor web app 이란 무엇인가? (dotnet 8)  (1) 2023.12.04
이벤트 처리 2  (0) 2022.05.06
이벤트 처리  (0) 2022.05.05