source

ASP란?NET Identity의 IUser Security Stamp Store 인터페이스

lovecheck 2023. 4. 22. 09:42
반응형

ASP란?NET Identity의 IUser Security Stamp Store 인터페이스

ASP를 보고 있습니다.NET Identity(ASP에서의 새로운 멤버십 실장).NET)를 실장할 때 이 인터페이스를 접하게 되었습니다.UserStore:

//Microsoft.AspNet.Identity.Core.dll

namespace Microsoft.AspNet.Identity
{ 
    public interface IUserSecurityStampStore<TUser> :
    {
        // Methods
        Task<string> GetSecurityStampAsync(TUser user);
        Task SetSecurityStampAsync(TUser user, string stamp);
    }
}

IUserSecurityStampStore디폴트로는 실장되어 있습니다.EntityFramework.UserStore<TUser>기본적으로는 이 모든 것을 얻어서 설정한다.TUser.SecurityStamp소유물.

좀 더 파헤친 결과, 한 남자가SecurityStamp는 입니다.Guid의 주요 포인트에서 새로 생성됩니다.UserManager(비밀번호 변경 등).

리플렉터에서 코드를 조사하고 있기 때문에, 이것 이외에는 별로 해독할 수 없습니다.거의 모든 기호 및 비동기 정보가 최적화되어 있습니다.

또한 구글은 큰 도움이 되지 않았다.

질문:

  • a가 뭐죠?SecurityStampASP에 있습니다.NET Identity와 그 용도
  • 그럼?SecurityStamp인증 쿠키가 생성될 때 어떤 역할을 합니까?
  • 이와 함께 취해야 할 보안상의 영향이나 주의사항이 있습니까?예를 들어 이 값을 클라이언트에 다운스트림으로 전송하지 않습니까?

갱신(2014년 9월 16일)

소스 코드는 다음과 같습니다.

이것은 사용자의 자격 증명의 현재 스냅샷을 나타냅니다.따라서 아무것도 변하지 않으면 스탬프는 그대로 유지됩니다.그러나 사용자의 암호가 변경되거나 로그인이 제거되면(google/fb 계정 연결 해제), 스탬프가 변경됩니다.이 기능은 2.0에서 제공되는 기능인 사용자에 대한 자동 서명/오래된 쿠키 거부 등에 필요합니다.

ID는 아직 오픈소스가 아니며 현재 파이프라인에 있습니다.

편집: 2.0.0으로 갱신되었습니다.따라서 이 기능의 주요 목적은SecurityStamp어디에서나 로그아웃을 가능하게 하는 것입니다.기본 개념은 비밀번호와 같은 보안 관련 사항이 사용자에게 변경될 때마다 기존 로그인 쿠키를 자동으로 비활성화하여 이전에 비밀번호/계정이 손상된 경우 공격자가 더 이상 액세스할 수 없도록 하는 것입니다.

2.0.0에서는 다음 구성을 추가하여OnValidateIdentity의 메서드CookieMiddleware보다SecurityStamp쿠키가 변경되면 쿠키를 거부합니다.또, 데이타베이스로부터의 유저의 클레임도 자동적으로 갱신됩니다.refreshInterval스탬프가 변경되지 않은 경우(역할 변경 등 처리)

app.UseCookieAuthentication(new CookieAuthenticationOptions {
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/Account/Login"),
    Provider = new CookieAuthenticationProvider {
        // Enables the application to validate the security stamp when the user logs in.
        // This is a security feature which is used when you change a password or add an external login to your account.  
        OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
            validateInterval: TimeSpan.FromMinutes(30),
            regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
    }
});

앱에서 이 동작을 명시적으로 트리거하려는 경우 다음을 호출할 수 있습니다.

UserManager.UpdateSecurityStampAsync(userId);

UseCookieAuthentication은 현재 권장되지 않습니다.를 사용하여 설정하는데 성공했습니다.

services.Configure<SecurityStampValidatorOptions>(o => 
    o.ValidationInterval = TimeSpan.FromSeconds(10));

요청에 따라 응답에서 응답으로 이동했습니다.

토큰 검증에 Security Stamp가 필요한 것을 확인했습니다.

회신 방법:데이터베이스에서 SecurityStamp를 null로 설정합니다. 토큰 생성(작동 가능) 토큰 확인(실패)

언급URL : https://stackoverflow.com/questions/19487322/what-is-asp-net-identitys-iusersecuritystampstoretuser-interface

반응형