jHipster微服務搭建遇到的問題及解決方法
jHipster微服務搭建遇到的問題
jhipster簡單來說是一個基於nodejs+yeoman的java程式碼生成器。往大了說是基於java的一套微服務解決方案。請注意是一整套的微服務解決方案。jhipster在整個程式架構上都做好了整合,包括前端mvvm框架(angularjs),前端構建工具(gulp)到後端的微服務框架(spring cloud)和hibernate/mongodb,再到單元測試/ui測試。
OAuth2相關
利用jHipster生成uaa(即: OAuth2)
1.配置充許訪問的路徑(即:無需鑑權)
找到 UaaConfiguration 類中的 configure(HttpSecurity http)
在其中新增
.antMatchers("/api/public/**").permitAll()
表示訪問以 /api/public
開頭的地址都無需鑑權,可直接訪問
2.允許client使用form的方式進行authentication的授權
若通過 http://{{OAuth2}}/oauth/token
獲取TOKEN,報 401 Unauthorized
,則表示需要授權方可訪問,如:
找到 UaaConfiguration 類中的 configure(AuthorizationServerSecurityConfigurer oauthServer)
在其中新增
oauthServer.allowFormAuthenticationForClients();
即可
3.修改登入介面(及TOKEN重新整理)
找到 UserResource
類中的 login(@Valid @RequestBody ManagedUserVM userVM)
方法,如:
注意這裡登入介面的訪問地址 /api/public/userManagement/login
其中加了 /api/public
所以這個介面是無需鑑權的
1: findOneByLoginAndPassword()
方法需要在 userRepository
自行定義
2: accessToken()
以下是 userService
相關程式碼:
找到 UaaConfiguration 類,需要在類中重新注入幾個 Bean 如:
Gateway相關
1.若通過閘道器呼叫服務,且訪問路徑包含 /api/public
則無需鑑權,需要修改以下兩個地方:
在 OAuth2AuthenticationConfiguration
和 MicroserviceSecurityConfiguration
類中找到 configure(HttpSecurity http)
方法,如下:
OAuth2AuthenticationConfiguration
類:
MicroserviceSecurityConfiguration
類:
在這兩個類中新增 .antMatchers("/api/public/**").permitAll()
和 .antMatchers("/**/api/public/**").permitAll()