다계층 애플리케이션에는 서로 다른 수준의 통신이 포함됩니다. 예를 들어 웹 API와 통신하는 브라우저 및 사용자를 대신하여 다른 웹 API와 통신하는 웹 API 등이 있습니다. 보안 통신을 사용하려면 인증 및 권한 부여 프로토콜에 추가 처리가 필요할 수 있습니다.
API 사용의 변경 사항이 승인된 액세스와 관련된 논리의 변경 사항으로 변환되기 때문에 유지 관리가 거의 불가능합니다. 결과적으로 특히 테스트 및 배포 병목 현상이 발생합니다. 마이크로 서비스.
이 문제를 완화하기 위해, 보안 토큰 서비스 (STS)는 응용 프로그램의 여러 구성 요소 간에 분산된 권한 부여 논리를 오프로드할 수 있는 중앙 리포지토리를 제공합니다. 주로 STS는 리소스에 대한 범위가 지정된 액세스 문제를 해결하기 위해 토큰을 발급하고 클레임의 유효성을 검사하는 일을 담당합니다.
사용 중인 보안 토큰 서비스에 대한 전반적인 아이디어를 얻기 위해 아래 다이어그램을 살펴보겠습니다.
아이덴티티서버4 에서 자주 사용되는 STS입니다. .NET Core OpenID 연결 및 OAuth 2.0 프로토콜을 구현하는 애플리케이션. 사용 중인 보안 토큰 서비스에 대한 전반적인 아이디어를 얻기 위해 아래 다이어그램을 살펴보겠습니다.
NCache 세부 정보 NCache IdentityServer4 사용 캐시 키 및 데이터 개요
와 IdentityServer NCache
IdentityServer4 API는 관계형 데이터베이스, NoSQL 솔루션, 파일 시스템 또는 메모리 내 데이터 저장소와 같은 NCache. 이를 위해 IdentityServer4의 작성자는 다음을 구현했습니다. 엔터티 프레임워크(EF) 코어 IdentityServer4에 대한 지원으로 모든 데이터베이스를 IdentityServer4의 저장 매체로 매우 쉽게 사용할 수 있습니다. 구성 및 운영 데이터.
NCache, 분산되고 확장 가능한 인 메모리 키-값 저장소, IdentityServer4에 매우 적합합니다. 다음 방법 중 하나로 IdentityServer와 함께 사용할 수 있습니다.
- NCache ~로 사용할 수 있습니다. IdentityServer4용 캐시 저장소 메모리 내 캐싱을 통해 작업 속도를 높이고 데이터베이스 히트를 줄이기 위한 구성 및 운영 데이터.
- NCache ~로 사용할 수 있습니다. 구성 및 영구 권한 부여 저장소 디스크에서 데이터를 가져와야 하는 병목 현상을 제거하여 성능을 더욱 향상시킵니다. 그런 다음 캐시의 메모리 내 콘텐츠를 디스크에 주기적으로 유지할 수 있으므로 데이터를 가져오는 데 걸리는 평균 시간이 크게 줄어듭니다.
또한 다음의 캐시 및 저장 역할을 혼합하고 일치시킬 수 있습니다. NCache 예를 들어 구성 저장소를 위한 캐싱 계층 및 운영 데이터를 위한 독립 실행형 저장소로 사용합니다. 이 모든 것은 IIdentityServerBuilder를 사용하여 구현됩니다. NCache ASP 중에 사용되는 확장 방법.NET Core 의존성 주입.
- 구성 저장소: 그대로 변경되지 않는 정적 데이터가 보관되는 저장소.
- 운영 매장: 작업이 수행되고 자주 수정될 가능성이 높은 운영 데이터가 보관되는 저장소입니다.
그것의 장점은 데이터 저장소를 메모리에 저장하여 더 좋고 빠른 결과를 얻을 수 있다는 것입니다. 수행 방법에 대해 천천히 자세히 살펴보겠습니다. 하지만 시작하기 전에 처리해야 할 몇 가지 전제 조건이 있습니다.
NCache 세부 정보 NCache IdentityServer4 사용 캐시 키 및 데이터 개요
사전 요구 사항
- .NET Core 3.0 및 3.1 SDK 그리고 런타임.
- NCache Enterprise 5.0 SP1 또는 서버에서 계속 실행됩니다.
- 자세한 내용은 GitHub 솔루션 사용중인 응용 프로그램에 대한 정보를 가져옵니다. 블로그 전체에서 코드 변경 사항은 동일한 응용 프로그램에 따라 설명됩니다.
시나리오 1 : NCache 메모리 내 IdentityServer4 저장소로
사용하는 동안 클라이언트, API 리소스, ID 리소스 등에 대한 정보(구성) 및/또는 지속 권한 부여 및 장치 흐름 코드 등에 대한 정보(작업)를 저장할 수 있습니다. NCache IdentityServer 저장소로.
이제 어디 보자 NCache 그림에 맞는:
사용하기 위해서는 NCache 구성 및 작동 데이터:
1 단계 : . cs 프로젝트에 추가.UseStartupNCache>() 메소드에 다음 코드를 추가합니다. 시작Ncache.cs 파일.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); var builder = services.AddIdentityServer() .AddTestUsers(TestUsers.Users) .AddNCacheConfigurationStore(options => { options.CacheId = _configuration["CacheId"]; var serverList = _configuration["Servers"].Split(',') .Select(x => x.Trim()) .ToList() .Select(y => new NCacheServerInfo(y, 9800)) .ToList(); options.ConnectionOptions = new NCacheConnectionOptions { ServerList = serverList, EnableClientLogs = true, LogLevel = NCacheLogLevel.Debug }; }) //.. rest of the code } |
2 단계 : . 앱 설정.json 파일, 값 수정 캐시 ID 사용 중인 캐시 이름에 대한 키입니다. 또한, 다수의 경우 서버 키에 속하는 하나 이상의 IP 주소 목록을 쉼표로 구분하여 사용하십시오. NCache 구성하는 서버 NCache 클러스터.
1 2 3 4 |
{ "CacheId": "democache", "Servers": "20.200.20.45,20.200.20.50", } |
3 단계 : 애플리케이션 실행 IdentityServer, MvcClient, API, JavaScriptClient 어떻게 보는지 NCache 구성 및 운영 저장소로 사용되는 데모 캐시가 실행 중이고 IdentityServer 샘플 응용 프로그램에 연결할 수 있는지 확인한 후 IdentityServer4 구성 및 운영 저장소로 작동합니다.
시나리오 2 : NCache IdentityServer4 캐시 구현으로
NCache의 핵심 기능은 더 빠른 액세스와 더 나은 성능을 위해 데이터 소스에 지속되는 데이터를 캐시하는 것입니다. 사용할 수 있는 반면 NCache 데이터 저장소로 사용할 수도 있습니다. NCache 구성 및/또는 운영 데이터를 캐싱하여 데이터 저장소와 애플리케이션 간에 NCache 동시에 데이터 저장소에 보관합니다.
그림으로 방법을 보여줍니다. NCache IdentityServer4에서 캐시로 작동합니다.
1 단계 : 구현하기 위해 NCache 데이터 저장소에 구성 및 운영 데이터를 유지하면서 구성 저장소로 추가 사용시작>() 메소드에 다음 코드를 추가합니다. 시작EFCore.cs 파일.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
public void ConfigureServices(IServiceCollection services) { ... var builder = services.AddIdentityServer() .AddTestUsers(TestUsers.Users) .AddNCacheCaching(options => { options.CacheId = _configuration["CacheId"]; var serverList = _configuration["Servers"].Split(',') .Select(x => x.Trim()) .ToList() .Select(y => new NCacheServerInfo(y, 9800)) .ToList(); options.ConnectionOptions = new NCacheConnectionOptions { ServerList = serverList }; options.DurationOfBreakInSeconds = 120; }); //.. rest of the code } |
2 단계 : . 앱 설정.json 파일, 값 수정 캐시 ID 사용할 캐시의 이름에 대한 키입니다. 또한, 복수의 경우 서버 키에 속하는 하나 이상의 IP 주소 목록을 쉼표로 구분하여 사용하십시오. NCache 구성하는 서버 NCache 무리. 또한 SQL Server의 연결 문자열을 제공하십시오.
1 2 3 4 5 6 7 8 |
{ "CacheId": "democache", "Servers": "20.200.20.45,20.200.20.50", "ConnectionStrings": { "db": "server=;database=IdentityServer4.EntityFramework;UserId=userid;Password=password;" } } |
3 단계 : 애플리케이션 실행 IdentityServer, MvcClient, API, JavaScriptClient 어떻게 보는지 NCache 구성 저장소, 지속 권한 부여 저장소 및 IProfileService 기본 구현에 대한 캐싱 메커니즘으로 작동합니다. 구성 저장소 및 영구 권한 부여 저장소 캐시로 사용되는 캐시가 실행 중이고 다음 항목에 연결할 수 있는지 확인하십시오. 아이덴티티서버 샘플 응용 프로그램.
결론
요약하자면, IdentityServer는 애플리케이션의 각 네트워크 홉에서 필요한 모든 인증을 수행하고 NCache 더 빠른 액세스를 위해 구성 및 작업 데이터를 유지하는 데 적합합니다. 그뿐만 아니라 NCache 또한 데이터 저장소로 사용할 수 있으며 두 종류의 데이터를 모두 메모리에 저장하여 애플리케이션에서 다른 데이터 소스를 제거할 수 있는 자유를 제공합니다. 다음에서 제공하는 확장 방법을 사용하여 이 모든 것을 얻을 수 있습니다. NCache 아주 쉽게.