Programing

ASP.NET Identity의 IUserSecurityStampStore 란 무엇입니까

lottogame 2020. 6. 1. 07:39
반응형

ASP.NET Identity의 IUserSecurityStampStore 란 무엇입니까 상호 작용?


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속성을 가져오고 설정하는 기본적으로 구현됩니다 .

좀 더 파고 나면 a SecurityStampGuid키 포인트에서 새로 생성 된 것으로 나타납니다 UserManager(예 : 비밀번호 변경).

Reflector 에서이 코드를 검사하기 때문에 실제로 이것을 넘어서는 해독 할 수 없습니다 . 거의 모든 기호 및 비동기 정보가 최적화되었습니다.

또한 Google은 큰 도움이되지 않았습니다.

질문은 :

  • 무엇 SecurityStampASP.NET 정체성과 그것을 사용 무엇인가?
  • SecurityStamp인증 쿠키가 생성 될 때 어떤 역할을 합니까 ?
  • 이로 인해 필요한 보안 파급 효과 나 예방 조치가 있습니까? 예를 들어,이 값을 클라이언트로 다운 스트림하지 않습니까?

업데이트 (2014 년 9 월 16 일)

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


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

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

편집 : 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);

토큰 확인에 SecurityStamp가 필요하다는 것을 알았습니다.

리포지토리 : 데이터베이스에서 SecurityStamp를 null로 설정 토큰 생성 (작동 확인) 토큰 확인 (실패)


UseCookieAuthentication은 이제 더 이상 사용되지 않습니다 . 나는 그것을 사용하여 구성했다.

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

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

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

반응형