溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Spring Boot中集成Okta身份驗(yàn)證

發(fā)布時(shí)間:2024-11-15 15:18:10 來源:億速云 閱讀:78 作者:小樊 欄目:編程語言

在Spring Boot中集成Okta身份驗(yàn)證需要遵循以下步驟:

  1. 創(chuàng)建Okta開發(fā)者帳戶并創(chuàng)建應(yīng)用程序 首先,您需要?jiǎng)?chuàng)建一個(gè)Okta開發(fā)者帳戶并創(chuàng)建一個(gè)應(yīng)用程序。在Okta控制臺(tái)中,您可以找到這些選項(xiàng)并按照指示操作。創(chuàng)建應(yīng)用程序后,您將獲得Client ID和Client Secret,這些值將用于配置Spring Boot應(yīng)用程序。

  2. 添加依賴項(xiàng) 在您的Spring Boot項(xiàng)目的pom.xml文件中,添加以下依賴項(xiàng):

<dependency>
    <groupId>com.okta.springboot</groupId>
    <artifactId>okta-spring-boot-starter</artifactId>
    <version>2.1.3</version>
</dependency>
  1. 配置Okta 在src/main/resources目錄下,創(chuàng)建一個(gè)名為application.yml的配置文件,并添加以下內(nèi)容:
spring:
  security:
    okta:
      issuer: https://<your-okta-domain>/oauth2/default
      client-id: <your-client-id>
      client-secret: <your-client-secret>
      redirect-uri: "{baseUrl}/login/callback"
      scope: openid,profile,email

請(qǐng)確保將<your-okta-domain>、<your-client-id><your-client-secret>替換為您在Okta應(yīng)用程序中創(chuàng)建的值。redirect-uri是用戶登錄后重定向的URL,scope定義了應(yīng)用程序請(qǐng)求的權(quán)限。

  1. 創(chuàng)建登錄和回調(diào)控制器 在src/main/java/<your-package-name>目錄下,創(chuàng)建一個(gè)名為LoginController的控制器,并添加以下內(nèi)容:
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class LoginController {

    @GetMapping("/login")
    public String login() {
        return "login";
    }
}

這將創(chuàng)建一個(gè)指向登錄頁面的鏈接。您可以根據(jù)需要自定義此頁面。

接下來,創(chuàng)建一個(gè)名為CallbackController的控制器,并添加以下內(nèi)容:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class CallbackController {

    @GetMapping("/callback")
    public String callback() {
        return "redirect:/home";
    }
}

這將在用戶成功登錄后將其重定向到主頁。

  1. 創(chuàng)建主頁控制器 在src/main/java/<your-package-name>目錄下,創(chuàng)建一個(gè)名為HomeController的控制器,并添加以下內(nèi)容:
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {

    @GetMapping("/home")
    public String home() {
        return "home";
    }
}

這將創(chuàng)建一個(gè)指向主頁的鏈接。

  1. 更新登錄頁面模板 在src/main/resources/templates目錄下,創(chuàng)建或更新一個(gè)名為login.html的文件,并添加以下內(nèi)容:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Login</title>
</head>
<body>
    <h1>Login</h1>
    <a href="/login">Login with Okta</a>
</body>
</html>
  1. 更新主頁模板 在src/main/resources/templates目錄下,創(chuàng)建或更新一個(gè)名為home.html的文件,并添加以下內(nèi)容:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Home</title>
</head>
<body>
    <h1>Welcome, {{#authentication.name}}!</h1>
    <a href="/logout">Logout</a>
</body>
</html>
  1. 更新安全配置 在src/main/java/<your-package-name>目錄下,創(chuàng)建或更新一個(gè)名為SecurityConfig的類,并添加以下內(nèi)容:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;

@Configuration
@EnableWebSecurity
public class SecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeRequests(authorize -> authorize
                .antMatchers("/login").permitAll()
                .anyRequest().authenticated()
            )
            .formLogin(form -> form
                .loginPage("/login")
                .defaultSuccessUrl("/home")
                .permitAll()
            )
            .logout(logout -> logout
                .logoutUrl("/logout")
                .logoutSuccessUrl("/login")
                .permitAll()
            )
            .addFilterBefore(new OktaAuthenticationFilter(), BasicAuthenticationFilter.class);

        return http.build();
    }
}

這將配置Spring Security以保護(hù)您的應(yīng)用程序,并允許經(jīng)過身份驗(yàn)證的用戶訪問主頁。

  1. 更新主應(yīng)用程序類 在src/main/java/<your-package-name>目錄下,更新主應(yīng)用程序類,如下所示:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class YourApplication {

    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }
}

現(xiàn)在,您的Spring Boot應(yīng)用程序已集成Okta身份驗(yàn)證。用戶可以通過訪問/login鏈接登錄,并在成功登錄后訪問/home頁面。用戶還可以通過訪問/logout鏈接注銷。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI