2

권한 기반 앱을 구축하고자합니다. 관리자가 사용자가 할 수있는 일과 할 수있는 일과 같은 일을 설정할 수있는 곳.ASP.NET 핵심 기반 접근 방식

말은 조직-A에서, 관리자는 CreateTools, EditToolsViewToolsUser1을 설정할 수 있습니다. User2CreateToolsViewTools 만 가능합니다. 조직-B에, 관리자가 여기 John에 CreateTools, ViewSales을 설정하는 동안 당신은 눈치

(어떤 이유로, 관리자가 여기 ViewTools에 John을 허용하지 않습니다), 이것들은 아니다 사용자에 대한 역할이지만 모든 사용자에 대한 권한

또한 페이지의 링크 (앵커 태그)는 권한에 따라 표시됩니다. 그는 단지 CreateTools, EditToolsViewTools

우리는 우리를 위해, 적어도 행복 경로 (또는이 고통스러운 것, 생각에 대한 링크를 볼 수있는 User1 로그, 말?이에 대해 언급 해주십시오). 우리는 앱을 사용하고자하는 모든 조직에서이를 확장하고 원하는대로 권한을 설정하는 데 도움이되기를 바랍니다.

우리가 구축하려는 방법은 (A SPA 응용 프로그램입니다. 브라우저) 클라이언트에 의해 소비 될 웹 API (ASP.NET 코어)를 통해입니다

나는 ASPNET MVC를 사용하기 전에 시도했다 5 그것을 정체성과 발판을 가지고 거기에서 애플 리케이션을 빌드하십시오. 그러나 역할 기반이었던 것.

클레임 기반 접근법에 대해 읽었으며이 내용은 blog (매우 도움이 됨)이지만 데이터베이스와 ID를 사용하여이를 구현하는 방법은 분명하지 않습니다. JWT가 어떻게 작동하는지 읽으십시오.

우리에게 중요한 부분인데, 일단 이것이 작동하는 방식으로 시작하면됩니다. 거기에서 앱을 제작할 것입니다.

자습서, 링크, 블로그. 의견이나 제안은 매우 도움이 될 것입니다. 또는 우리가 조사해야하는 용어.

+0

https://docs.asp.net/en/latest/security/authorization/index.html –

답변

3

개인적으로 오픈 소스 프로젝트 IdentityServer을 보았습니다. 현재 출시 된 버전은 버전 3이지만 Asp.Net Core에서 호스팅되는 버전 4는 최근 출시 후보 버전을 획득했습니다.

아키텍처 개요

IdentityServer 프로젝트는 다음과 같은 MVC 페이지, 웹 API 호출, 모바일 애플리케이션 등과 같은 리소스에 대한 토큰 기반의 보호를 제공하는 데 사용할 수있는 Security Token Service (STS)을 제공 할 것입니다 .

Clients, ScopesClaims 토큰 기반 인증 STS를 사용할 수있는 애플리케이션 정의가 요청할 수있는 정보의 종류 (예 : 사용자의 이름, 이메일 주소 등)을 실제 제; 이러한 클레임은 Identity Provider에 STS 자체와는 별도의 데이터베이스 백엔드로 저장됩니다.

STS는 OpenID ConnectOAuth2의 두 표준 구현을 제공해야합니다.

Overview presented at http://docs.identityserver.io/en/dev/intro/terminology.html

STS는 사용자를 인증하기 위해 Identity Provider를 조회하고, 해당 사용자에 관한 항을 포함 할 수있는 토큰을 구성한다. 이 토큰은 각 Client에 구성된 미들웨어로 디코딩되며, 추출 된 클레임은 액세스를 승인하는 데 활용할 수 있으며, 선택적으로 ASP.Net Core Policies과 함께 사용할 수 있습니다.이 접근법은 포괄적 인 토큰 및 클레임 기반 보안 아키텍처를 제공합니다.

참고 자료, 샘플 및 연습은

난 당신이 용어를 IdentityServer3를 들어, 문서 및 샘플을 검사하여 시작하고, 아마 더 구체적으로 IdentityServer4 설명 .These 제안하고 포괄적 인 샘플 및 연습을 포함 강하게 것 구현을 위해.

Dominick Baier (IdentityServer의 공동 저자)는 OpenID ConnectOAuth2here의 개요를 제공합니다.

토큰 기반 인증 작동 방식을 이해했으면 시나리오를 지원하는 Identity Provider을 구성하는 방법을 검토해야합니다.

IdentityServer3에 여러 개의 Identity Provider 프로젝트를 플러그인 할 수 있습니다 (ASP.Net ID 포함). Brock Allen (공동 창업자 IdentityServer)은 클레임 등을 저장하기위한 Membership Reboot 및 Identity Reboot 프로젝트와 사용자 관리를위한 관리 포털을 제공하는 Identity Manager를 만들었습니다. 각각의 설명은 다음 링크에서 확인할 수 있습니다

Identity Reboot by Brock Allen

Introducing Identity Manager by Brock Allen

Identity Manager walkthrough by Scott Brady

IdentityServer4 현재 필요한 경우, 지원 사용자 정의 할 수 있습니다 ASP.Net 코어 신원을 지원합니다 멀티 테넌시.

IdentityServer4 Quickstarts를 포괄적 세트 SQL Serverhere에 데이터를 저장하고 ASP.Net Core IdentityEntity Framework의 구체적 용도 포함 here을 찾을 수있다.

각 빠른 시작의 전체 소스 코드는 GitHub here에서 사용할 수 있습니다.

권한 부여 정책 허가와 관련하여

는, 내가 특별히 잘 지정할 수있는 새로운 ASP.Net 코어 권한 부여 정책의 사용을 포함, 클레임 기반 인증 및 권한 부여의 다양한 측면에 대한 설명은 GitHub의에 AspNetAuthorizationWorkshop 추천 자격 기준에 부합하는지 확인하기 위해 클레임을 보는 개별 사용자 집합의 조합을 검토하고 관리 오버 헤드를 줄이기 위해 적용 할 수있는 기존 역할 (선택적)을 검토하여 클레임을 기반으로 한 정책 기반 규칙을 만듭니다.

요약

를 마무리, 당신은 위의 권고 생성하기 위해 수행 할 수 : ASP.Net 핵심 아이덴티티를 기반으로 사용자 클레임의

  1. 데이터베이스 저장소.

  2. 사용자를 인증하고 IdentityServer를 사용하여 Claims가 포함 된 토큰 을 제공하는 보안 토큰 서비스.

  3. 사용자에 대한 규칙을 평가하는 일련의 권한 부여 정책 클레임 (및 하이브리드 접근 방식을 선택한 경우 추가 역할).

보안은 복잡한 영역으로 처음에는 상당히 위험 할 수 있습니다. 그러나 Dominick Baier와 Brock Allen은 훌륭한 일련의 소개 및 코드 샘플을 제공하는 업계 전문가로 인정 받고 있으며 해당 프로젝트 인 IdentityServer은 클레임 기반 인증을 위해 Microsoft에서 권장합니다.

+0

아마도 downvoter는 그렇게하는 이유를 공유하려고합니다. 감사. – dmcquiggin

+0

솔직히 말해서 IdentityServer에 대해 처음 들었습니다. 당신이 대답하는 방법과 당신의 지식은 우리가 이것이 올바른 길이라고 생각하게 만듭니다. 더 깊이 파고들 것입니다. 정말 고맙습니다! –

+0

마음에 드는 것이 좋습니다. 당연히 Microsoft AD B2C (Active Directory Business to Consumer)와 같은 다른 솔루션이 있습니다.이 솔루션은 전 세계적으로 아직 상용화 중이 아니지만 북미에서 사용할 수 있습니다. 그것은 '포인트 앤 클릭'솔루션으로, 세분화 된 요구 사항을 충족시키지 못할 수도 있습니다. 또한 Auth0 및 기타 상용 서비스 제공 업체는 호스팅 서비스를 제공합니다. 각각의 평가와 경험을 통해 오픈 소스 IdentityServer와 강력한 커뮤니티를 통해 유연성을 제공합니다. Azure App 서비스에서 호스팅은 쉽습니다. – dmcquiggin