이야기를 디버깅하는 개발자.

개발과 창작 사이에서, 사람들이 자기만의 이야기를 만들 수 있는 도구와 기록을 만듭니다.

roslyn.dev 자세히보기

개발 노트 78

IIS Express에 redirection.config 오류 관련

이번에 새롭게 합류하게된 회사에 프로젝트를 받아 실행하는 과정에서 다음과 같은 오류를 마주하게 되었습니다. CloudHospital.IdentityServer.STS.Identity 프로젝트의 IIS Express를 구성하려고 할 때 다음과 같은 오류가 발생했습니다. 파일 이름: redirection.config 오류 : 구성파일을 읽을 수 없습니다. 이와 관련된 문제해결을 위해 IIS Express를 검색하면, 대부분 환경설정 파일을 삭제하라고 나오는데, 프로젝트 실행시 프로필 지정을 잘못해도 위와 같은 오류가 발생할 수 있습니다. 물론 정확히 말해서, 기본값으로 설정된 IIS Express에 commandLineArgs 값 때문에 발생한 오류로 유추되기 때문에, 프로필 지정을 잘못했다고 나온 오류는 ..

IdentityServer 학습 #10 - BFF without backend

본문 글은 원문(https://docs.duendesoftware.com/identityserver/v7/quickstarts/js_clients/js_without_backend/)을 참고하여 작성되었습니다. (1) 먼저 사용할 프로젝트를 생성해 줍니다. (예시에서는 SPA) dotnet new web -n SPA (2) 해당 프로젝트를 솔루션에 추가해 줍니다. dotnet sln add ./{프로젝트경로} (3) wwwroot 디렉토리를 만들어 주고, package.json 파일을 생성해 줍니다. npm init (4) oidc-client 라이브러리를 설치해 줍니다. (시작파일은 app.js로 지정) npm i oidc-client (5) 설치된 라이브러리에 있는 js 파일을 wwwroot 로 복사..

IdentityServer 학습 #9 - BFF with backend

본 내용은 원문(https://docs.duendesoftware.com/identityserver/v7/quickstarts/js_clients/js_with_backend/) 내용을 참고하여 작성되었습니다. (1) JavaScript기반 클라이언트로 사용할 프로젝트를 추가해 줍니다. dotnet new web -n JavaScriptClient 이렇게 하면 빈 Asp.net Core 프로젝트가 생성됩니다. (2) 다음으로 솔루션에 해당 프로젝트를 추가해 줍니다. dotnet sln add ./{프로젝트경로} (3) IdentityServer의 BFF관련 라이브러리들을 추가해 줍니다. dotnet add package Microsoft.AspNetCore.Authentication.OpenIdConne..

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..

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..

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..

IdentityServer 학습 #5 - Scope 개념

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

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..

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..

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..

반응형