2 개의 데이터베이스가 무엇인지 언급하지 않았으므로 사용자 데이터베이스가 아니며 컨텍스트를 벗어난 것으로 가정합니다. 사용자 신원 저장소에 초점을 맞 춥니 다. 예를 들어 ADFS, LDAP 등을 사용하지 않는 한 별도의 엔터티가됩니다. 나는 당신이 자신의 정체성 해결책을 구축하는 것을 꺼려하고, 보안 주제로 인해 널리 사용되거나 받아 들여지는 것을주의해야합니다.
Thinktecture Identity Server을 살펴보십시오. OpenId Connect 기반의 오픈 소스 솔루션으로 .NET에 내장되어 있습니다. 자체 데이터베이스와 함께 제공되며 동일한 도메인 SSO, 쿠키 기반 인증을 지원하며 개방형 ID 연결을 지원합니다. ADFS에 연결하려는 경우 페더레이션 인증도 지원합니다. 또한 그것과 통합 된 사회적 사인을 할 수도 있습니다.
.NET, Java 및 PHP 솔루션을 프로덕션 환경에서 동일한 인스턴스에 통합했으며 모든 것이 환상적이며 완벽합니다.
별도의 서비스로 호스트 할 수 있습니다. 알려진 클라이언트 (앱 및 서비스), 로그 아웃 후 URL을 포함하여 들어오고 리디렉션되는 URL을 등록 할 수 있으므로 응용 프로그램이 신원 서버에서 원활하게 액세스하여 다시 액세스 할 수 있습니다. Identity Server에는 API 및 웹 응용 프로그램을 보호하는 데 필요한 모든 미들웨어가 함께 제공됩니다. 또한 액세스 토큰을 얻고 유효성을 검사하기위한 REST 엔드 포인트를 제공합니다.
다른 범위를 설정하여 요청을 처리 할 수있는 범위를 지정할 수도 있습니다.
내가 말하는 바는 oAuth 2.0 스펙과 직접적으로 관련이 있습니다. 아마도 당신이 그것에 대해 모른다면 here을 조금이라도 읽을 수있을 것입니다.
전형적인 oAuth 흐름 (예를 들어,g 암시 적 플로우 또는 인증 코드 플로우), Owin 파이프 라인에서 올바른 미들웨어를 연결하고 API 리소스를 [Authorize] 속성으로 꾸미면 애플리케이션은 사용자가 로그인 할 수있는 ID 서버 페이지로 리디렉션됩니다. API (보호 된 리소스)는 토큰이 제시되고 특정 토큰을 기반으로 요청을 수락/거부 할 수 있도록 허용 할 것인지 여부를 지정할 수 있습니다.
클라이언트 등록을 통해 알려진 클라이언트 만 신원 확인 서버 (응용 프로그램은 일반적으로 인터넷에 연결됨)로 받아 들여지며 MembershipReboot 구성 요소를 사용하거나 Thinktecture (또한 opensource)에서 신원 저장소로 사용하거나 자신의 구현을 작성할 수 있습니다 "사용자 서비스". 사용 가능한 확장 점이 너무 많으며 클라이언트 응용 프로그램의 UI 체계와 일치하도록 ID 서버 페이지의 모양 및 느낌을 포함한 모든 내용을 실질적으로 사용자 정의 할 수 있습니다. IUserService (자신의 사용자 저장소, UI를 사용자 정의하는 ViewLoader, 클라이언트 당 허용 된 출처를 지정하는 CORS 정책 서비스, 토큰 (액세스/새로 고치기 토큰), ScopeStore, ClientStore, TokenHandleStore (범위 저장을위한 인증서 기반의 TokenSigningService, 클라이언트 구성, 토큰), ClaimsFilters를 사용하여 토큰을 발행 할 때 포함되는 클레임을 필터링하여 저장하거나 제공해야하는 더 많은 정보를 반환하는 외부 공급자를 사용할 때 유용합니다.
하지만 사용 가능한 무언가를 말했듯이 프로덕션 환경의 여러 응용 프로그램에서 사용하고있는 것처럼, 시도해 볼 수 있습니다.
Identity Server와 MembershipReboot 데이터베이스를 모두 설정 한 상태에서 로컬 컴퓨터에서 30 분 안에 실행하면됩니다. 지원은 저자들로부터 매우 우수하며 이것은 사용자 인증 및 권한 부여를위한 매우 널리 인정 된 솔루션입니다. 1.이 가서 당신이 owin에 권한 부여를 위해 뭔가 설정을 가지고 있는지 확인하기 위해 API를 알려줍니다 2. 필요에 따라 [Authorize]
및 또는 [ScopeAuthorize]
와 API를 장식 : 예를 들어
는 WebAPI를 확보하는 것은 매우 간단하다 관로. Owin 시작에서 3. 단지 사용
app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions()
{
Authority = "http://your-idserver-url"
});
예 그건 당신이 당신의 WebAPI에 필요한 모든 변화이다. MVC 기반 웹 응용 프로그램의 오픈 아이디 구성을 설정하는 별도의 방법이 있지만 어쨌든 샘플 코드가있는 문서에서 사용할 수 있습니다.
설명서는 매우 쉽게 따라갈 수 있으며 서버를 쉽게 설정할 수 있습니다. App 및 서비스의 모든 복잡성을 제거하므로 각 Apps 또는 서비스에서 인증 및 권한 처리에 대해 걱정할 필요없이 App이 원하는 것을 집중할 수 있습니다.
Google은 SQL Server를 사용하여 사용자 지정 ID (실제로 사용하고있는 사용자) 설정에 대해 사용자가 원하는 것을 수행 할 수있는 방법을 이해할 가능성이 높습니다. –
@cFrozenDeath 사용자 지정 ASP.NET ID? 맞춤 스토리지 공급자입니까? Identity는 OWIN 일입니까 아니면 ASP.NET 일입니까? – SmashCode
Identity는 OWIN 미들웨어에서 실행되는 멤버 자격 공급자 (인증/인증)입니다. 신원은 원하는 저장소 공급자 (SQL Server, MySQL 등)에 구성 할 수 있습니다. OWIN은 ASP.NET과 같은 것입니다. OWIN의 기본 튜토리얼/문서를보실 것을 적극 권장합니다. –