<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Spring 中基于 OAuth2 的身份驗證和授權 > 原文: [https://javatutorial.net/what-is-oauth2-based-authentication-and-authorization-in-spring](https://javatutorial.net/what-is-oauth2-based-authentication-and-authorization-in-spring) OAuth2 允許第三方應用程序代表資源所有者或通過允許第三方應用程序代表自己獲取對 HTTP 服務的有限訪問權限,該服務是代表資源所有者的。 借助 OAuth2,服務提供商和消費者應用程序可以安全地相互交互。 ![spring-featured-image](https://img.kancloud.cn/64/23/64231db4bf6e880066d0d4c2e31ac166_780x330.jpg) ## 工作流程 從外部應用程序訪問用戶的受保護數據之前,需要執行幾個步驟。 1. 用戶被帶到服務提供商服務器 1. 例如 Facebook 或 LinkedIn 2. 用戶必須授予外部應用程序許可才能訪問有關其數據的資源,例如讀取甚至寫入。 3. 授權服務器將訪問令牌發送到消費者應用程序。 4. 現在,外部應用程序可以從資源服務器訪問用戶的受保護數據。 ## 不同角色的術語 在 OAuth2 中,有 4 個角色: 1. 資源所有者 1. 用戶 2. 資源服務器 1. 托管受保護資源并根據訪問令牌提供對其訪問權限的服務器 3. 客戶 1. 尋求許可的外部應用 4. 授權服務器 1. 在驗證用戶身份后發出訪問令牌 ## 不同的令牌 有兩種類型的令牌: 1. 訪問令牌 1. 授權服務器根據用戶身份驗證提供 2. 允許第三方應用程序訪問用戶數據 2. 刷新令牌 1. 用于在原始令牌到期時獲取新的訪問令牌,因此名稱 2. 但是由于安全原因,并非總是可能獲得此令牌 ## `@EnableOAuth2Sso` ```java @Configuration @EnableZuulProxy @EnableOAuth2Sso @Order(value = 0) public class AppConfiguration extends WebSecurityConfigurerAdapter { @Autowired private ResourceServerTokenServices resourceServerTokenServices; @Override public void configure(HttpSecurity http) throws Exception { http.csrf() .disable() .authorizeRequests() .antMatchers("/auth-server/**", "/login") .permitAll() .anyRequest() .authenticated() .and() .logout() .permitAll() .logoutSuccessUrl("/"); } } ``` `@EnableOAuth2Sso`注釋通知 Spring 配置[`OAuth2TokenRelayFilter`](https://github.com/spring-cloud/spring-cloud-security/blob/master/spring-cloud-security/src/main/java/org/springframework/cloud/security/oauth2/proxy/OAuth2TokenRelayFilter.java)。 此過濾器從用戶的 HTTP 會話中檢索已獲取的訪問令牌,并填充它們。 `@Order`注解的工作是確保由我們的`WebSecurityConfigurerAdapter`創建的過濾器優先于由另一個`WebSecurityConfigurerAdapter`創建的過濾器。 ## `@EnableResourceServer` 現在,讓我們設置資源服務器。 ```java @SpringBootApplication @EnableResourceServer @Controller @RequestMapping("/") class ResourceServerImplementation { public static void main(String[] args) { SpringApplication.run(ResourceServerImplementation.class, args); } @RequestMapping(method = RequestMethod.GET) @ResponseBody public String greetPrincipal(Principal principal) { return "Greetings, " + principal.getName(); } } ``` 該應用程序返回發起該請求的主體的名稱。 同樣,我們需要一個有效的訪問令牌才能訪問資源服務器的端點。 這 2 個代碼段摘自[此處](https://www.baeldung.com/spring-security-oauth2-enable-resource-server-vs-enable-oauth2-sso)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看