전체 글 68

IdentityServer 학습 #8 - EntityframeworkCore

그 동안에는 AddInMemoryClients 등을 이용해서 코드에서 직접 정의되었던 것을 DB를 이용한 형태로 변경합니다. 본문의 원문은 다음 링크를 참고합니다. 원문링크 : https://docs.duendesoftware.com/identityserver/v7/quickstarts/4_ef/ Duende Software Documentation The most flexible and standards-compliant OpenID Connect and OAuth 2.0 framework for ASP.NET Core. docs.duendesoftware.com 더불어 원문에서는 Database로 Sqlite를 사용했으나, 본문에서는 Sql Server로 변경하였습니다. (1) 먼저 기존에 설치된 I..

개발이야기 2024.03.07

IdentityServer 학습 #7 - API access

API access 관련 내용을 다음과 같이 정리합니다. 원문링크 : https://docs.duendesoftware.com/identityserver/v7/quickstarts/3_api_access/ (1) 새롭게 추가할 스코프를 정의해 줍니다. (중요! 원문에서 누락된 부분) public static IEnumerable IdentityResources => new IdentityResource[] { new IdentityResources.OpenId(), new IdentityResources.Profile(), new IdentityResource() { Name = "verification", UserClaims = new List { JwtClaimTypes.Email, JwtClaimT..

개발이야기 2024.03.07

IdentityServer 학습 #6 - OpenID Connect

이제부터는 OpenID Connect를 학습해 봅시다. (1) 먼저 OpenID Connect를 위한 UI를 IdentityServer에 추가해 줍니다. dotnet new isui (2) 주석 처리되어 있던 Razor 관련 항목들을 활성화 시켜 줍니다. using Serilog; namespace IdentityServer; internal static class HostingExtensions { public static WebApplication ConfigureServices(this WebApplicationBuilder builder) { // uncomment if you want to add a UI builder.Services.AddRazorPages(); builder.Services..

개발이야기 2024.03.07

IdentityServer 학습 #5 - Scope 개념

기본적으로 인증을 처리하는 것은 oAuth나 OpenID Connect나 동일한 개념으로 정리될 수 있습니다. 하지만, Scope는 두 개념에서 각각 다르게 사용됩니다. Scope라는 동일한 필드(Attribute)를 oAuth와 OpenID Connect가 다르게 사용하는 것인데, 사용자에 대한 사용자 인증만을 처리하는 OpenID Connect는 해당 Scope를 사용자 인증 정보를 담아두는 필드로 활용합니다. 물론 그것은 강제된 사항이 아니지만 보편적으로 그렇습니다. 때문에 Scope에는 사용자의 이메일 등 인증된 정보가 담겨지게 됩니다. 반면 oAuth는 인증 이후에 리소스에 접근 가능한 권한 여부를 체크하기 때문에 Scope를 본래의 용도인 권한 체크 용도로 사용하게 됩니다. 즉 oAuth에서 ..

개발이야기 2024.03.07

IdentityServer 학습 #4 - Scope

이번에는 Scope를 추가해 보도록 합시다. (1) api 프로젝트의 Program.cs 파일을 수정해서 인가정책을 추가해 줍니다. using System.Security.Claims; var builder = WebApplication.CreateBuilder(args); builder.Services.AddAuthentication() .AddJwtBearer(options => { options.Authority = "https://localhost:5001"; options.TokenValidationParameters.ValidateAudience = false; }); builder.Services.AddAuthorization(options => { options.AddPolicy("ApiS..

개발이야기 2024.03.07

IdentityServer 학습 #3

(1) 콘솔 응용프로그램을 추가해 줍니다. dotnet new console -n {프로젝트명} (2) 해당 프로젝트를 솔루션에 추가해 줍니다. dotnet sln add ./{프로젝트폴더} (3) 해당 프로젝트에 IdentityModel을 Nuget으로 설치해 줍니다. dotnet add ./{프로젝트폴더} package IdentityModel (4) 개발용 인증서를 신뢰하기 위해 다음 명령을 수행합니다. dotnet dev-certs https --trust (5) 콘솔 응용프로그램의 Program.cs의 내용을 다음 내용으로 변경합니다. using IdentityModel.Client; using System.Text.Json; // discover endpoints from metadata va..

개발이야기 2024.03.07

IdentityServer 학습 #2

(1) IdentityServer가 추가되어있는 솔루션에 새로운 API 프로젝트를 추가해 줍니다. dotent new webapi -n {프로젝트명} --no-openapi (2) 해당 프로젝트를 솔루션에 추가해 줍니다. dotnet sln add ./src/{프로젝트폴더} (3) Microsoft.AspNetCore.Authentication.JwtBearer 라이브러리를 Nuget에서 설치해 줍니다. dotnet add ./{프로젝트폴더} package Microsoft.AspNetCore.Authentication.JwtBearer (4) 추가한 프로젝트의 Program.cs 를 다음과 같이 수정합니다. using System.Security.Claims; var builder = WebApplic..

개발이야기 2024.03.07

IdentityServer 학습 #1 - 기본셋팅

본 내용은 다음 원문을 정리한 글입니다. 원문링크 : https://docs.duendesoftware.com/identityserver/v7/quickstarts/1_client_credentials/ 예제 프로젝트 생성 순서 * 본문의 작성 기준은 .net8을 기준으로 작성되었습니다. (1) 다음 명령으로 Duende.IdentityServer.Templates를 설치해 줍니다. dotnet new install Duende.IdentityServer.Templates (2) 빈 솔루션 하나를 생성해 줍니다. dotnet new sln -n {솔루션명칭} (3) 빈 IdentityServer 템플릿을 추가합니다. dotnet new isempty -n IdentityServer (4) 솔루션에 프로젝..

개발이야기 2024.03.07

Blazor + Efcore로 웹사이트 만들기 (2)

이제 Efcore를 설치할 차례인데, 정식 명칭은 EntityFramework Core로, 나름 Microsoft의 철학이 녹아든 ORM입니다. 초기부터 Code First, Db First 등과 같이 다양한 방법으로 DB를 제어하는 기능해왔으며, 현재는 이 Entity framework와 유사한 접근 방식을 Node.js에 TypeORM이나 Sequelize 같은 orm 들이 따라하고 있습니다. Db 테이블을 하나의 Entity와 매칭하여 관리하는 것은 굉장히 큰 메리트를 제공하며, Dotnet의 linq, lambda와 함께 "아름다운 코드"를 생성하는 극한의 매력을 선사합니다. 저는 2014년도에 처음 이 Entity framework를 접했고, 당시에 java 코드가 C# 코드랑 거의 똑같다고 생..

개발이야기 2024.02.06

Blazor + Efcore로 웹사이트 만들기 (1)

Microsoft에서 만든 웹어셈블리 기술이 Blazor 입니다. 웹소켓 기술인 SignalR과 연계되어, 전통적인 서버사이드 방식 외에도 클라이언트 사이드 방식을 제공하여, 프론트엔드 영역으로까지 확장된 기술이라고 볼 수 있습니다. 국내에서는 거의 활용되고 있지 않지만, 가끔씩 만나볼 수 있습니다. 본 프로젝트의 의의는 C# 이라는 언어 하나만 가지고도 온전한 웹사이트를 구성할 수 있다는데 있습니다. 물론 그럼에도 불구하고 웹에 대한 이해는 반드시 필요합니다. (HTML, CSS, Javascript) 웹에 대한 이해를 바탕으로 C#으로 거의 모든 구성이 가능한 웹서비스, 블레이저(Blazor)를 만나봅시다. 먼저 vs2022에서 프로젝트를 생성해 봅시다. Blazor Web App을 선택하고 다음 버..

개발이야기 2024.02.05
반응형