몇달동안 Authorization , Authencation , jwt 지옥에서 살면서 느낀것데
이건 좀 어려운 개념 아닐까 싶네요
원래 정석대로 하면
사전에 Scaffold로 ef identity schema DB 에 만들고
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
services.Configure(options =>
{
// Password settings~~ 생략
그다음에 Middleware 에서
app.UseAuthoriaztion()
app.UseAuthencation()
하고 view 에서는 signmanger ,usermanager 로 멤버쉽 관리하고 등등
이렇게 알려준 메뉴얼 대로 하면 돌아가는구나 하면 쓸수 있습니다.
문제는 ?? 여기에 좀 이상한 요구사항이 오면 그때부터 꼬이기 시작하고
function 하나하나 보면서 이 option 을 다양하게 적용하면서 맞춰 봐야했습니다(제경우에는)
구글인증이나 카카오 인증을 넣을려면 이걸 어디서 부터 만져야 하는지
EF Identity 스키마를 못쓰고 기존 DB Schema를 재활용 할려면 또 뭘 만져야 하는지
Controller 가 아닌 일반 static file 에 접근 권한은 또 어떻게 …ㅠㅠ
oidc jwt 인증을 할려면 또 바꿔야 하는지 그리고 조금 부끄럽지만 ;;
미들웨어 순서도 중요하네요
또 ;; 이게 blazor spa로 가면 바뀌고 두서없이 적었지만
기존에는 그냥 있는데로 쓰다가 뭘 좀 바꿀려면 찾아봐야 할것이 참 많은 느낌입니다 .
제가 못나서 그런것겠지만 와 이건 간단하지 않더군요
그리고 deep 하게 파고 들어가면 뭔가 접근할수 없는 부분도 있는것 같구요
뭔가 이건 .Net 을 익히는데 있어 루키 개발자나 윈폼 다루는 개발자가 하기에는
허들인것 같습니다. 물론 익숙해지면 참 삽질을 많이했구나 느끼겠지만요
아직 까지 접근하지 못하고 이해 안가는 부분이
[Authoriazation] 속성을 줬을때 도대체 내부에서 무슨일이 일어나는지 모르겠습니다.
더불어 EF Identity 의 대한 이해가 없는 고객사나 개발자랑 일할때
DB에 table 촤르륵 생기니까 이것 뭐냐고 설명하는것도 난감하고 2factor 적용할려면 또 찾아봐야 되고 ㅠㅠ
정리하면 EF Identity, Authencation,Signmanager, claim ,role,oauth , middleware
하나하나 확실한 개념을 세우고 가야 하는것 같습니다.
그리고 이 개념을 전파해야 하는 입장에서 그냥 쓰세요 할수도 없고 ^^;; 일일이 설명해줘야 하는데
정확히 ? 모르겠고요
그냥 옛날에 간단하게 할때는 session이나 cookie 에 key 넣고 master 페이지에서
check 만 하면 솔직히 아무 문제 없이 쓰긴 했죠 (그게 맞다는것 아닙니다 ^^)