ASP.NET Core 인증 과정 을 깊이 해석 하여 실현
오늘 우 리 는 승승장구 하 며 ASP.NET Core 의 인증 에 대해 이야기 합 시다.
인증 은 사용자 의 신분 을 확인 하 는 과정 이다.권한 수 여 는 사용자 가 자원 에 접근 할 권리 가 있 는 지 확인 하 는 과정 이다.
1.아무리 변해 도 근본 을 떠 나 지 않 는 다
일반적인 신분 인증 사례 는 두 부분 을 포함한다.
① 사용자 인증
② 인증 되 지 않 은 사용자 가 제 한 된 자원 에 접근 하려 고 할 때 반응 한다.
등 록 된 인증 처리 프로그램 과 설정 옵션 을'방안'이 라 고 부 릅 니 다.방안 은 사용자 가 관련 처리 프로그램의 인증,도전 과 금지 행 위 를 참고 할 수 있 도록 메커니즘 으로 사용 할 수 있 습 니 다.
우리 가 말 하 는 것 은
쿠키 인증 방안 을 바탕 으로 인증 에 성공 하면 go on,인증 에 실패 하면 로그 인 페이지 로 이동 합 니 다.
기본 인증(BA)방안 을 기반 으로 인증 에 성공 하면 go on,인증 에 실패 하면 브 라 우 저 에 WWW-Authenticate 레이 블 을 되 돌려 주 고 브 라 우 저 는 인증 창 을 다시 팝 업 합 니 다.
2.ASP.NET 코어 인증 원리
ASP.NET Core 에서 인증 은 IAuthenticationService 가 담당 하고 인증 서 비 스 는 등 록 된 인증 처리 프로그램 을 호출 하여 인증 과 관련 된 작업 을 수행 하 며 전체 검증 과정 은 인증 미들웨어 로 연결된다.
그 중 에는 몇 가지 중요 한 절차 가 있다.
1.인증 처리 절차
프로젝트 Scheme 의 설정 항목 AuthenticationSchemeOptions 와 결합 하여 인증 처리 프로그램 을 작성 할 수 있 습 니 다.
쿠키 기반 인증 방안 은 Options 항목 에서 로그 인 주 소 를 지정 할 수 있 습 니 다.
기본 신분 기반 인증 방안 은 Options 항목 에서 사용자 이름/비밀 번 호 를 지정 할 수 있 습 니 다.
2.인증 절 차 는 AuthenticationHandler 류 또는 IAuthenticationHandler 인터페이스 에서 계승 합 니 다.
핵심 인증 함 수 는 성명 의 접근 통 제 를 바탕 으로 Claims Principal,Scheme 에 연 결 된 AuthenticationTicket 대상 을 생 성 할 수 있 습 니 다.인증 성공/실 패 를 막론하고 함 수 는 AuthenticatereResult 대상 으로 돌아 갑 니 다.
도전(인증 되 지 않 은 사용자 에 대한 반응):예 를 들 어 로그 인 페이지 로 돌아 가기
인증 되 었 으 나 특정 자원 에 접근 할 수 없 는 반응 을 금지 합 니 다.예 를 들 어 알림 문자열 을 되 돌려 줍 니 다.
이상 은 모두 서비스 등록 과정 입 니 다.
요청 을 받 았 습 니 다.인증 미들웨어 는 IAuthenticationService 를 사용 하여 HttpContext 가 요구 하 는 scheme 에 따라 인증 하고 실제 내부 에 서 는 두 번 째 로 작 성 된 인증 처리 프로그램 을 호출 합 니 다.
이상 의 인증 원 리 는 이전에 근접 실전 이 있 었 다.ASP.NET Core 는 기본 인증 을 실현 했다.
소스 코드 는 다음 과 같 습 니 다.
3.ASP.NET Core 에서 현재 사용자 가 져 오기
성명 에 기반 한 접근 제 어 는 HttpContext.User 속성 에 신분 정 보 를 저장 합 니 다.
var claims = new[] {
new Claim(ClaimTypes.NameIdentifier,username),
new Claim(ClaimTypes.Name,username),
};
var identity = new ClaimsIdentity(claims, Scheme.Name);
var principal = new ClaimsPrincipal(identity);
Context.User = principal;
웹 프로그램 에서 현재 로그 인 사용 자 를 가 져 옵 니 다.두 가지 코드 가 있 습 니 다.3.1 컨트롤 러 에서 현재 로그 인 사용 자 를 가 져 오기
컨트롤 러 는 요청 을 처리 하 는 1 등 시민 으로 타고 난 HttpContext 입 니 다.
Controller Base 기본 클래스 에 포 함 된 HttpContext 속성 을 통 해 User 대상 을 직접 가 져 옵 니 다.
실제로 Razor Page,Razor View,Middleware 는 모두 HttpContext 속성/인 자 를 포함 하여 직접 사용 할 수 있 습 니 다.
3.2 서비스 에서 현재 로그 인 사용 자 를 가 져 옵 니 다.
이때 서 비 스 는 요청 처리 의 한 부분 으로 HttpContext 를 직접 사용 할 수 없습니다.
ASP.NET Core 는 IHttpContextAccessor 클래스 를 제공 하여 이번 요청 의 HttpContext 대상(주입 프레임 에 의존 하 는 역할)을 주입 할 수 있 습 니 다.
// , , IHttpContextAccessor httpContext
public class UserEntityService : IUserEntityService
{
private IHttpContextAccessor _accessor;
private readonly IMongoCollection<UserProfile> _users;
public UserEntityService(IHttpContextAccessor accessor, IDefaultMongoDatabaseProvider databaseProvider)
{
_accessor = accessor;
_users = databaseProvider.GetCollection<UserProfile>(CollectionNames.UserProfiles);
}
public Task<UserProfile> GetCurrentUserAsync()
{
var rawUser = this._accessor.HttpContext.User();
if (rawUser == null)
{
return null;
}
var filter = Builders<UserProfile>.Filter.Eq("UserId", rawUser.UserId);
return _users.Find(filter).FirstOrDefaultAsync();
}
}
저 희 는 상기 코드 장 소 를 구분 할 필요 가 없습니다.Controller 나 Application 서비스 에서 ICurrentUser 인 터 페 이 스 를 사용 하여 로그 인 사용 자 를 받 을 수 있 습 니 다.방백
개인 적 으로 ASP.NET Core 인증 의 소스 코드 는 현실 적 인 인식 을 바탕 으로 추출 되 었 고 우 리 는 프레임 코드 의 간결 하고 세련 되 며 차원 이 뚜렷 하 다 는 것 에 경탄 했다.
성명 을 바탕 으로 하 는 접근 제어 가 표준 이 되 었 고 ASP.NET Core/bp vnext 는 모두 완벽 한 지원 을 제공 합 니 다.
ASP.NET Core 의 인증 과정 을 깊이 있 게 해석 하여 실현 하 는 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 ASP.NET Core 인증 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
부트스트랩 ASP.NET에서 설정하는 법1) _Layout.cshtml 內 link로 bootstrap 참조 2) Nuget 패키지에서 BootStrap 다운로드 3) 하단 부트스트랩 예제 사이트 참고해서 프로젝트 개발 참고 :...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.