亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringSecurity oAuth2.0的四種模式(小結)

 更新時間:2022年02月07日 16:05:01   作者:老梁講Java  
本文主要介紹了SpringSecurity oAuth2.0的四種模式,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

1.1. 授權碼授權模式(Authorization code Grant)

1.1.1. 流程圖

1.1.2. 授權服務器配置配置

授權服務器中 client,secret,redirectUri,授權模式,權限配置

//授權服務器配置
@Configuration
@EnableAuthorizationServer
public class OAuth2AuthorizationServer extends
        AuthorizationServerConfigurerAdapter {

    @Override
    public void configure(ClientDetailsServiceConfigurer clients)
            throws Exception {
        clients.inMemory()
            .withClient("clientapp")
            .secret("112233")
            .redirectUris("http://localhost:9001/callback")
            // 授權碼模式
            .authorizedGrantTypes("authorization_code")
            .scopes("read_userinfo", "read_contacts");
    }

}

1.1.3. 資源服務器配置

配置需要資源授權的接口地址

//資源服務配置
@Configuration
@EnableResourceServer
public class OAuth2ResourceServer extends ResourceServerConfigurerAdapter {

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .anyRequest()
            .authenticated()
        .and()
            .requestMatchers()
            .antMatchers("/api/**");
    }

}

1.1.4. 操作步驟

瀏覽器請求下列地址,獲取授權code,請求參數(shù)client_id,redirect_uri回調地址,response_type響應類型,scope權限

http://localhost:8080/oauth/authorize?client_id=clientapp&redirect_uri=http://localhost:9001/callback&response_type=code&scope=read_userinfo

輸入用戶名密碼,該密碼為Spring Security的登路密碼,application.properties里配置

# Spring Security Setting
security.user.name=bobo
security.user.password=xyz

登陸后顯示

選擇Approve,點擊Authorize,會調用回調地址并返回code參數(shù)

在獲得授權碼后,接下去獲取訪問令牌,訪問

http://localhost:8080/oauth/token?code=ghN0hF&grant_type=authorization_code&redirect_uri=http://localhost:9001/callback&scope=read_userinfo

注意:需要在headers里添加認證

認證參數(shù)就是授權服務器配置的client和secret

 獲取token后訪問

http://localhost:8080/api/userinfo?access_token=f4345f3a-34a3-4887-bc02-e95150c54bf4

如果token錯誤,則

1.1.5. 使用場景

授權碼模式是最常見的一種授權模式,在oauth2.0內是最安全和最完善的。適用于所有有Server端的應用,如Web站點、有Server端的手機客戶端??梢缘玫捷^長期限授權。

1.2. 隱式授權模式(Implicit Grant)

1.2.1. 流程圖

1.2.2. 改動 authorizedGrantTypes

@Configuration
@EnableAuthorizationServer
public class OAuth2AuthoriationServer extends AuthorizationServerConfigurerAdapter{
    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {

        clients.inMemory()
                .withClient("clientapp")
                .secret("112233")
                .accessTokenValiditySeconds(60)
                .redirectUris("http://localhost:9001/callback")
                .authorizedGrantTypes("implicit")
                .scopes("admin", "visitor");
    }
}

1.2.3. 操作步驟

申請授權token,參數(shù)和申請授權碼類似,client_id,redirect_uri回調地址,response_type有變動,改為直接獲取token,scope權限,state用于認證標記,傳過去什么回調時傳回來什么

http://localhost:8080/oauth/authorize?client_id=clientapp&redirect_uri=http://localhost:9001/callback&response_type=token&scope=admin&state=abc

操作同上,輸入密碼跳轉認證確認,選Approve后點Authorize,跳轉

3. 可以看到直接返回了access_token,state也是原樣返回
4. 之后按授權碼模式第六步操作,把access_token參數(shù)帶上,進行接口調用就可以了

1.2.4. 使用場景

  • 適用于所有無Server端配合的應用
  • 如手機/桌面客戶端程序、瀏覽器插件。
  • 基于JavaScript等腳本客戶端腳本語言實現(xiàn)的應用。

注意:因為Access token是附著在 redirect_uri 上面被返回的,所以這個 Access token就可能會暴露給資源所有者或者設置內的其它方(對資源所有者來說,可以看到redirect_uri,對其它方來說,可以通過監(jiān)測瀏覽器的地址變化來得到 Access token)。

1.3. 密碼模式(Resource Owner Password Credentials Grant)

1.3.1. 流程圖

1.3.2. 改動

授權服務器配置,需要添加用戶認證管理端點authenticationManager,修改模式authorizedGrantTypes為password

// 授權服務器配置
@Configuration
@EnableAuthorizationServer
public class OAuth2AuthoriationServer extends AuthorizationServerConfigurerAdapter{
    
    @Autowired
    private AuthenticationManager authenticationManager;

    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
        endpoints.authenticationManager(authenticationManager);
    }

    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {

        clients.inMemory()
                .withClient("clientapp")
                .secret("112233")
                .accessTokenValiditySeconds(60)
                .redirectUris("http://localhost:9001/callback")
                .authorizedGrantTypes("password")
                .scopes("admin", "visitor");
    }
}

1.3.3. 操作步驟

調用以下鏈接,向客戶端和服務器提供用戶名密碼

http://localhost:8080/oauth/token?password=123456&grant_type=password&username=lll&scope=admin

注意:和授權碼模式一樣,需要在headers里添加認證

結果:

獲取token后,步驟同1.1和1.2模式

1.3.4. 使用場景

  • 這種模式適用于用戶對應用程序高度信任的情況。比如是用戶操作系統(tǒng)的一部分。
  • 認證服務器只有在其他授權模式無法執(zhí)行的情況下,才能考慮使用這種模式。

1.4. 客戶端憑證模式(Client Credentials Grant)

1.4.1. 流程圖

1.4.2. 改動

只需修改授權服務器,authorizedGrantTypes類型client_credentials

1.4.3. 操作步驟

http://localhost:8080/oauth/token?grant_type=client_credentials&scope=admin

可以看到客戶端憑證模式也需要在header里添加認證賬戶密碼

獲得token后操作同上

1.4.4. 使用場景

  • 客戶端模式應用于應用程序想要以自己的名義與授權服務器以及資源服務器進行互動。
  • 例如使用了第三方的靜態(tài)文件服務

1.5. 刷新TOKEN

1.5.1. 流程圖

1.5.2. 改動

1.5.3. 操作步驟

以授權碼模式為例,步驟同授權碼模式,取得授權碼后,去取token時,返回

在token過期后,調用

http://localhost:8080/oauth/token?grant_type=refresh_token&refresh_token=ad3941d1-c6dd-4a2e-a9c8-eac6a9a59dd2

返回

就可以拿新的access_token繼續(xù)調用了建議將access_token和refresh_token的過期時間保存下來,每次調用平臺方的業(yè)務api前先對access_token和refresh_token進行一下時間判斷,如果過期則執(zhí)行刷新access_token或重新授權操作。refersh_token如果過期就只能讓用戶重新授權。

參考 https://www.cnblogs.com/maoxiaolv/p/5838680.html

代碼學習地址 https://github.com/spring2go/oauth2lab

到此這篇關于SpringSecurity oAuth2.0的四種模式(小結)的文章就介紹到這了,更多相關SpringSecurity oAuth2.0模式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 在同一個類中調用帶有@Transactional注解的方法示例

    在同一個類中調用帶有@Transactional注解的方法示例

    這篇文章主要為大家介紹了在同一個類中調用帶有@Transactional注解的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • java版簡單的猜數(shù)字游戲實例代碼

    java版簡單的猜數(shù)字游戲實例代碼

    猜數(shù)字游戲是一款經典的游戲,該游戲說簡單也很簡單,說不簡單確實也很難,那么下面這篇文章主要給大家介紹了java版簡單的猜數(shù)字游戲的相關資料,文中給出了詳細的實現(xiàn)分析和示例代碼供大家參考學習,需要的朋友們下面來一起看看吧。
    2017-05-05
  • Java getRealPath(

    Java getRealPath("/")與getContextPath()區(qū)別詳細分析

    這篇文章主要介紹了Java getRealPath("/")與getContextPath()區(qū)別詳細分析,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • 詳解微信開發(fā)之access_token之坑

    詳解微信開發(fā)之access_token之坑

    access_token分類一是普通access_token,二是網頁授權access_token。這篇文章主要介紹了詳解微信開發(fā)之access_token之坑,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • 使用Enumeration和Iterator遍歷集合類詳解

    使用Enumeration和Iterator遍歷集合類詳解

    Enumeration和Iterator接口功能相似,而且Iterator的功能還比Enumeration多,那么為什么還要使用Enumeration
    2013-09-09
  • Java多線程中的Executor框架解析

    Java多線程中的Executor框架解析

    這篇文章主要介紹了Java多線程中的Executor框架解析,Executor 框架是 Java5 之后引進的,在 Java 5 之后,通過 Executor 來啟動線程比使用 Thread 的 start 方法更好,除了更易管理,效率更好,需要的朋友可以參考下
    2023-12-12
  • IntelliJ IDEA基于Scala實現(xiàn)Git檢查工具

    IntelliJ IDEA基于Scala實現(xiàn)Git檢查工具

    這篇文章主要介紹了如何使用Scala實現(xiàn)自定義的Git檢查工具,大家可以基于本文的示例進行擴展與實現(xiàn),也可以進行其他應用方向的嘗試,感興趣的可以了解下
    2023-08-08
  • JAVA寶藏工具hutool的使用

    JAVA寶藏工具hutool的使用

    開發(fā)過程中總是會遇到需要自己自定義工具類的情況,做一些數(shù)據轉換、字符串操作、日期處理、加解密、編解碼、金額計算等,本文就詳細的介紹有一個工具類hutool的使用,感興趣的可以了解一下
    2021-10-10
  • 淺析Java驗證碼生成庫JCaptcha

    淺析Java驗證碼生成庫JCaptcha

    JCaptcha 是一個用來生成驗證碼的開源Java類庫,使用起來也是非常的簡單方便。本文通過代碼實例介紹了JCaptcha類庫。
    2016-07-07
  • Java程序打印奧林匹克標志方法詳解

    Java程序打印奧林匹克標志方法詳解

    這篇文章主要介紹了Java程序打印奧林匹克標志方法詳解,需要的朋友可以參考下。
    2017-09-09

最新評論