작성
·
672
0
안녕하세요.
oauth 를 사용하여 마이크로서비스 인증/인가를 구현하는 경우가 꽤 많은 것으로 알고 있습니다.
구글링을 해보면 사용자가 최초 로그인 시, 인증서버에서 jwt 토큰을 발행해주고 사용자는 jwt 토큰을 사용하여 각 마이크로서비스의 api 를 요청하는 컨셉으로 확인됩니다.
이때 각각의 마이크로서비스는 oauth 에서 리소스 서버의 역할로 볼 수 있고요.
그래서 최초 토큰을 발행하는 인증 방식은 단순히 id/password 를 넘겨서 토큰을 발행받는 Resource Owner Password grant 방식을 사용했던 것 같은데요.
하지만 강의에서 설명해 주신대로 최근 스프링 시큐리티의 Authorization 서버에서는 Resoure Owner Password grant 방식을 더 이상 사용할 수 없다고 하셨어요.
그렇다면 마이크로서비스를 위해 Authorization 서버를 구현할 때, 토큰 발행을 어떤 방식으로 구현하는 것이 바람직할까요? 제3의 앱에서 로그인을 하는 것도 아닌데 Authorization code 방식을 적용할 필요가 있는 것인지 모르겠네요.
답변 1
0
네
인가서버를 Spring Authorization Server 를 사용하실 경우에는 그렇다고 볼 수 있습니다.
Authorizatoin Framework 2.1 RFC 표준 사양에서 Resoure Owner Password 방식 자체가 제외되어 있기 때문에 스프링 시큐리티에서도 이러한 정책으로 설계한것이 아닐까 추측 해 봅니다.
Client Credentials 방식으로도 가능하지만 사용자의 인증이 필요한 웹 어플리케이션에서는 맞지 않는 것이어서 Authorization code Grant 방식으로 권한을 획득하는 식으로 구현해야 할 것 같습니다.