진짜 힘들어 죽겠네요

처음에 단순히 jwt 로그인만 하면된다 해서 시작했다가
Oauth oidc sso 인증서버로 진화해서 Identity4 server를 썼는데
또 제약 조건이 EF Identity 못써서 로그인을 죄다 커스텀 해야 되고
또 여기에 자바 측에 암호화 된 전문값을 .net 으로 풀어야 하는데
이걸 또 풀어서 회원정보 취득하고
또 인증 jwt 검증하는 middleware 도 만들고
테스트서버 구축 한다고 자체 발급 인증서 발행하니까 이걸 또 서버에 설치하니까
동작안해서 한참을 삽질해서 겨우 뜨게 만들고 (이건 또 client 에 root 인증서를 설치 해야 하는것였네요)
또 iis를 아니고 웹서비스로 배포해야 하고 ㅠㅠ
인증이나 oauth 이런것 그냥 대충 알고 살다가 deep 하게 할려니 장난 아니네요
뭔가 눈에 보이는것도 아니고 back단에서 돌아가고 만들어진 library method 하나하나 찾아보고 적용하면서 할려니까
힘드네요
와이프가 다크서클로 줄넘기 하겠다고 놀리네요

8개의 좋아요

OIDC 서버 구축/운영은 일반적인 웹 프로젝트라고 볼 수 없는 부분인 것 같은데…

혹시 산으로 가는 배를 만들고 계신 건 아니신지요 ^^

4개의 좋아요

막 산이 아니라 하늘로 갈것 같습니다 ^^

4개의 좋아요

Blazor에서 인증만 제대로 해도 80%는 먹고 들어간다 봅니다
인증하면서 API, 미들웨어, CRUD 다 경험할 수가 있다보니…
근데 말씀하신 내용 보면 무지 어려운거 하시는거 같은데요;;;

2개의 좋아요

Identity 서비스를 직접 구축하시기 보다는 Azure Entra ID (Azure AD) 또는 Azure Active Directory B2C 사용을 추천드려요~

저도 앱 프로젝트가 아니라 서버 프로젝트 시작하면서 사용자 인증이나 서버 간 인증을 OAuth 로 어떻게 할까 여러 방면으로 알아보고 구현도 해봤는데, Identity 서비스를 직접 구현하는 건 효율이 너무 떨어진다는 걸 깨달았습니다.

Azure 가 익숙하지 않으시면 Auth0 도 추천드립니다.

둘 다 얼마 이상 사용자가 생기는 게 아니면 무료로 사용이 가능합니다.

4개의 좋아요

blazor를 거의 만들어본것 아니지만 인증 문제을 넘으면 sql pooling 문제때문에 좀고생했던 기억이 나네요
transaction 을 잡고 해제하는법때문에 고생했던것 같아요 물론 제가 초보라 헤맨것지만요
blazor 는 상태관리는 그리 어렵지 않았던것 같은데 flow 가 꼬이는것이 참어려웠던것 같아요
spa라서 이동개념이 아니라 transition 이라고 하나요 그리고 reqeust,response
개념을 다시 잡아야 했던것이 좀 어려웠어요

3개의 좋아요

네 AD로 구축하고 치웠으면 좋았을텐데 심지어 키클락도 고려해봤습니다. 하지만 성격이 너무 특이한
시스템이라 ㅠㅠ

4개의 좋아요

^^; 혹시 경험 공유해 주실 수 있나요? 블로깅이라도 ㅎㅎ
저도 이번에 처음으로 jwt로 api 인증토큰을 내부 시스템에 사용하게 되었는데 requeset header로 했다가 querystring으로도 되어야 해서 querystring 되게 미들웨어 만들어서 해넣고… 처음하니 모든게 어렵네요…
그리고 토큰 만료에 대해 처리는 없고 그냥 401 나오게 나두었는데 갱신토근 발급과 보관 만료 그리고 재발급 요청등은 어떻게 적용하셨는지 궁금하네요…

내부 기관계 시스템이라 인터넷 자원은 사용 못하고 Identity4 server 나 EF도 사용안하고, AD는 사용못하고… 순수 개발이 필요한 환경에서는 개발이 많이 힘드네요.

자바 스프링할때 키클락은 해봣는데 해본정도고 인증관련해서 제3자인증은 해본게 없어 처음 접하니 어렵네요.

1개의 좋아요

oidc 인증체계를 일일이 다 만드는것 힘듭니다
token 을 발행하는것부터 시작해서 access token ,refresh token 로직을 다구성하셔야 하고
(.net 에서 제공하는것이 있는지 몰라도)
하다못해 로그인 페이지 부터 그리고 spec jwk 등등
RFC 6749 - The OAuth 2.0 Authorization Framework

이런 스펙을 일일이 구현하는데 뭐 사내 프로젝트면 대충 해도 되겠지만 오히려
작은 프로젝트라면 Identity 4 를 권합니다. 사실 뭐 별다른 대안도 없는것 같습니다.
그리고 키클락 괜찮을지 모릅니다 맛만 보셨다고 하는데 그냥 어드민 잘 만져보시는것이
쉽게 해결하는 문제일지 모릅니다.

정리하고 싶은 마음은 있는데 제가 요즘 여유가 없네요
저희도 폐쇄망 EF Identit 못쓰는 환경입니다.
근데 서버가 아니라 Client 면
server.addindentity 에 oidc 인증만 넣으면 알아서 자동으로 되는데요??
Client 에 경우 oidc 서버를 구독하면 oidc 에서 제공하는 spec json을 호출해서
정보를 받아서 자동으로 작동합니다. refresh 건 access token 이든

1개의 좋아요

ASP.NET이나 ASP.NET Core에서 JWT 인증은 MS에서 이미 관련 기능을 다 제공하므로 ASP.NET Core Identity나 Indentity Server 사용안하더라도 아주 로우 레벨까지 만들고 그런 것은 아닙니다.

오히려 국내 현실에서는 ASP.NET Core Identity나 Indentity Server를 사용 안하는 경우가 훨씬 많지 않을까 싶네요. 각 서비스마다 Users를 비롯해서 테이블 구조가 다른데 프레임워크에 미리 정의된 테이블 구조를 사용한다는 것 자체가 상당히 안맞지 않나 싶습니다.

그래서, 제 경우 DB 테이블 구조를 서비스의 기능에 맞게 직접 설계한 후, Form 인증이든 JWT 인증이든 ASP.NET/ ASP.NET Core에서 제공하는 인증 시스템 - Claims 기반 인증 및 Authorize 어트리뷰트를 이용해서 MVC Controller, Web API 및 SignalR Hub 메서드의 접근 제어를 합니다.

JWT 인증도 ASP.NET Core에서 제공하는 JWT 패키지 이용해서 전달받은 계정 정보가 맞으면 JWT 토큰을 발행하면 끝입니다. Blazor WASM + 기존 ASP.NET MVC 5 Web API (ASP.NET Core가 아니라 .NET Framework 4.7.2) 연동도 해봤는데 JWT 토큰을 슬라이드 방식으로 자동 갱신하는 것도 구현해봤네요.

개발하다보니 아래와 같은 기술들로 JWT 인증 구현했는데 무슨 Middleware개발까지 하고 그런 것은 하나도 없었습니다.

  • ASP.NET Core + Javascript Frontend (Javascript ES5/6 + JQuery + Knockout.js)
  • Blazor WASM + ASP.NET MVC 5 Web API (.NET Framework 4.7.2)
  • ASP.NET Core 7 SignalR + Javascript Client / .NET Client

ASP.NET Core 책들 보면 꽤 많은 책들이 인증 부분을 ASP.NET Core Identity로 설명하거나 무료 OAuth 웹서비스 사용하는 것으로 설명하고 있는데, 이런 책들은 자신만의 DB 연동에는 적합하지 않습니다.

차라리, 잘 정리된 포스팅이나 유데미 강좌가 훨씬 도움이 많이 됩니다. 저도 이런 것들 보면서 필요한 기능 다 구현했구요.

알아서 잘 찾아보시겠지만 ASP.NET Core에서 JWT 사용법은 아래 포스팅 보시면 상당히 도움이 될 겁니다. ASP.NET Core 5 용이지만 Startup.cs Program.cs 부분만 .NET 6/7에 맞게 바꾸면 ASP.NET Core 6/7에서도 그대로 작동합니다.

Implementing JWT Authentication in ASP.NET Core 5

참고로, 레거시 때문에 백엔드가 ASP.NET Core가 아닌 ASP.NET인 경우에는 아래 포스팅 보시면 됩니다.
ASP.NET Web API 2 - Creating And Validating JWT (JSON Web Token)

유데미 강좌의 경우 저는 예전에 아래 제목의 강의를 봤는데 이 강좌가 ASP.NET Identity나 Identity Server 같은 것 사용하지 않고 JWT 인증 구현하는 방법 설명하는데, 지금 찾이보니 이 강좌는 구버전이라서 내려가고 새 버전의 강좌가 다른 이름으로 올라와있는것 같네요. 여하튼 유데미에서 잘 찾아보시면 커스텀으로 JWT 인증 구현하는 강좌가 있을 겁니다.
Udemy Course - RESTful API with ASP.NET Core Web API - Create and Consume

실제 문의 내용과 제 댓글이 서로 다른 이야기를 하고 있을 지도 모르겠지만 조금이나마 도움이 되길 바랍니다.

8개의 좋아요