oauth2及時從一個項目A申請另外一個項目B的訪問的時候,不用在項目A輸入項目B的用戶名和密碼,我的理解先跳轉到項目B,利用項目B的用戶名和密碼獲得一個code之類的,這裏有點像openID,不過不是的,這是用戶某次受權的,不是用戶惟一標識一致能夠受權,作了2個關於oauth2的demo,這裏記錄一下git
用戶從A訪問B的地址,例如:localhost:8080/oauth/authorize?client_id=client&response_type=code&redirect_uri=http://www.baidu.com,而後須要輸入spring security的用戶名和密碼,選擇Approve,這裏有點像,王者榮耀確認獲取微信信息的界面github
利用B的用戶名和密碼獲得code,而後訪問 http://client:secret@localhost:8080/oauth/token?grant_type=authorization_code&code=Li4NZo&redirect_uri=http://www.baidu.com獲得access_token,有了access_token了就能夠訪問項目B了,到時候把access_token做爲參數帶過去了就行了就能夠訪問了,這樣咱們就算不知道項目B的用戶名和密碼也能夠訪問服務B的資源了spring
這裏也能夠直接訪問 http://client:secret@localhost:8080/oauth/token的地址直接獲得access_token,例如:http://localhost:8080/oauth/token?grant_type=password&username=user&password=123&scope=settingw,不過這樣就須要項目A有項目B的用戶名和密碼了,這現實嗎,確定不現實微信
最後咱們能夠指定是否要refsh_token,access_token,過時時間expires_in等等spring-boot
github源碼地址:https://github.com/waterlufei/spring-boot.git,下面的Oauth2SpringCloud和TestOauth2都是些的demo,用的jar包不同一個用了spring boot的,一個用了spring cloud的code