ASP.NET Core에서 인증을 수행하는 적절한 방법을 이해하려고합니다. 여러 리소스를 살펴 봤습니다 (대부분 구식 임).
어떤 사람들은 Azure AD와 같은 클라우드 기반 솔루션을 사용하거나 IdentityServer4를 사용하고 내 토큰 서버를 호스팅하는 대체 솔루션을 제공합니다.
이전 버전의 .Net에서 더 간단한 인증 형식 중 하나는 사용자 지정 Iprinciple을 만들고 추가 인증 사용자 데이터를 내부에 저장하는 것입니다.
public interface ICustomPrincipal : System.Security.Principal.IPrincipal
{
string FirstName { get; set; }
string LastName { get; set; }
}
public class CustomPrincipal : ICustomPrincipal
{
public IIdentity Identity { get; private set; }
public CustomPrincipal(string username)
{
this.Identity = new GenericIdentity(username);
}
public bool IsInRole(string role)
{
return Identity != null && Identity.IsAuthenticated &&
!string.IsNullOrWhiteSpace(role) && Roles.IsUserInRole(Identity.Name, role);
}
public string FirstName { get; set; }
public string LastName { get; set; }
public string FullName { get { return FirstName + " " + LastName; } }
}
public class CustomPrincipalSerializedModel
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
그런 다음 데이터를 쿠키로 직렬화하고 클라이언트에 다시 반환합니다.
public void CreateAuthenticationTicket(string username) {
var authUser = Repository.Find(u => u.Username == username);
CustomPrincipalSerializedModel serializeModel = new CustomPrincipalSerializedModel();
serializeModel.FirstName = authUser.FirstName;
serializeModel.LastName = authUser.LastName;
JavaScriptSerializer serializer = new JavaScriptSerializer();
string userData = serializer.Serialize(serializeModel);
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
1,username,DateTime.Now,DateTime.Now.AddHours(8),false,userData);
string encTicket = FormsAuthentication.Encrypt(authTicket);
HttpCookie faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
Response.Cookies.Add(faCookie);
}
내 질문은 다음과 같습니다.
이전 버전의 .Net에서 수행 한 방식과 유사한 인증 방법은 이전 방식이 여전히 작동하거나 최신 버전이 있습니까?
고유 한 사용자 지정 원칙을 만드는 고유 한 토큰 서버 구절을 사용할 때의 장단점은 무엇입니까?
클라우드 기반 솔루션 또는 별도의 토큰 서버를 사용할 때이를 현재 애플리케이션과 어떻게 통합 하시겠습니까? 여전히 내 애플리케이션에 사용자 테이블이 필요합니까? 두 가지를 어떻게 연결 하시겠습니까?
다른 SSO로 확장 할 수있는 동시에 Gmail / Facebook을 통한 로그인을 허용하기 위해 엔터프라이즈 애플리케이션을 만드는 방법에는 여러 가지 솔루션이 있습니다.
- 이러한 기술의 간단한 구현은 무엇입니까?