1. 程式人生 > >jHipster微服務搭建遇到的問題及解決方法

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無需鑑權,需要修改以下兩個地方:

OAuth2AuthenticationConfigurationMicroserviceSecurityConfiguration 類中找到 configure(HttpSecurity http) 方法,如下:

OAuth2AuthenticationConfiguration類:
這裡寫圖片描述

MicroserviceSecurityConfiguration 類:
這裡寫圖片描述
在這兩個類中新增 .antMatchers("/api/public/**").permitAll().antMatchers("/**/api/public/**").permitAll()

2.若通過閘道器呼叫超時,有配置 ribbon ,需要要在 application.yml 檔案中新增以下配置,如:

這裡寫圖片描述