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가 뭐죠?
SecurityStamp
ASP에 있습니다.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
'source' 카테고리의 다른 글
필요한 경우에만 소수점을 표시하는 Excel 번호 형식 (0) | 2023.04.22 |
---|---|
싱글 비트를 설정, 클리어 및 토글하려면 어떻게 해야 합니까? (0) | 2023.04.22 |
Observable Collection과 Binding List의 차이 (0) | 2023.04.17 |
리모트 Git 저장소에 수정된 커밋을 푸시하려면 어떻게 해야 합니까? (0) | 2023.04.17 |
WPF 바인딩을 강제로 새로 고치는 방법 (0) | 2023.04.17 |