Java を使用して Spring Security OAuth に基づくシングル サインオン システムを開発する方法2
はじめに:
インターネットの急速な発展に伴い、ユーザーにログインを要求する Web サイトやアプリケーションが増えていますが、ユーザーは Web サイトやアプリケーションごとにアカウントとパスワードを覚えたくありません。シングル サインオン (SSO) システムはこの問題を解決し、ユーザーが一度ログインした後は認証を繰り返さずに複数の Web サイトやアプリケーションにアクセスできるようにします。この記事では、Java を使用して Spring Security OAuth2 に基づくシングル サインオン システムを開発する方法と、具体的なコード例を紹介します。
1. 準備作業:
開発を開始する前に、いくつかの基本的なツールと環境を準備する必要があります:
2. Spring Boot プロジェクトの作成:
まず、Spring Boot プロジェクトを作成し、必要な依存関係を追加する必要があります。 EclipseまたはIntelliJ IDEAを開き、「新規」をクリックし、「Spring Starterプロジェクト」を選択し、必要な情報(プロジェクト名、パッケージ名など)を入力します。次に、次の依存関係をプロジェクトの pom.xml ファイルに追加します:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.security.oauth</groupId> <artifactId>spring-security-oauth2</artifactId> <version>2.3.4.RELEASE</version> </dependency> <!-- 添加其他需要的依赖 --> </dependencies>
3. Spring Security OAuth2 の構成:
次に、Spring Security OAuth2 モジュールを構成する必要があります。 application.yml という名前のファイルを src/main/resources ディレクトリに作成し、次の構成情報を追加します。
spring: security: oauth2: client: registration: custom: client-id: {your-client-id} client-secret: {your-client-secret} provider: custom auth-uri: {authorization-uri} token-uri: {token-uri} user-info-uri: {user-info-uri} redirect-uri: {redirect-uri} scope: {scope-list} provider: custom: authorization-uri: {authorization-uri} token-uri: {token-uri} user-info-uri: {user-info-uri} resource: user-info-uri: {user-info-uri}
上記の構成では、 {your-client-id}、{your-client-secret} 、 {authorization-uri}、{token-uri}、{user-info-uri}、{redirect-uri}、および {scope-list} は、それぞれ実際の値に置き換える必要があります。
4. ログイン ページの作成:
次に、ユーザー ログイン用のログイン ページを作成する必要があります。 src/main/resources/templates ディレクトリに login.html という名前のファイルを作成し、次のコードを追加します。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Login</title> </head> <body> <h2>Login</h2> <form method="post" action="/login"> <div> <label for="username">Username:</label> <input type="text" id="username" name="username" /> </div> <div> <label for="password">Password:</label> <input type="password" id="password" name="password" /> </div> <button type="submit">Login</button> </form> </body> </html>
5. 認証および認可サーバーを作成します。
次に、認証サーバー (認可サーバー) と認可サーバー (リソース サーバー) は、ユーザーの認証と認可を処理します。 SecurityConfig という名前の Java クラスを作成し、次のコードを追加します。
@Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests().antMatchers("/login").permitAll().anyRequest().authenticated() .and().formLogin().loginPage("/login").permitAll() .and().logout().logoutSuccessUrl("/login?logout").permitAll(); http.csrf().disable(); } @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication() .withUser("admin").password("{noop}admin").roles("ADMIN"); } }
6. リソース サーバーを作成します。
次に、API を保護するためにリソース サーバーを作成する必要があります。 ResourceServerConfig という名前の Java クラスを作成し、次のコードを追加します。
@Configuration @EnableResourceServer @EnableGlobalMethodSecurity(prePostEnabled = true) public class ResourceServerConfig extends ResourceServerConfigurerAdapter { @Override public void configure(HttpSecurity http) throws Exception { http.authorizeRequests().antMatchers("/api/**").authenticated(); } }
7. シングル サインオンをテストします。
この時点で、シングル サインオン システムの開発は完了です。ブラウザからログイン ページ (http://localhost:8080/login) にアクセスすると、アプリケーションを実行してログインできます。ログインに成功したら、リクエスト ヘッダーにアクセス トークンを追加することで、他の保護されたリソースにアクセスできます。
結論:
この記事では、Java を使用して Spring Security OAuth2 に基づくシングル サインオン システムを開発する方法を紹介し、具体的なコード例を示します。シングル サインオン システムを使用すると、ユーザーは繰り返し認証することなく、複数の Web サイトやアプリケーションに簡単にアクセスできます。この記事が、読者が Spring Security OAuth2 の関連知識をよりよく理解し、適用するのに役立つことを願っています。
以上がJava を使用して Spring Security OAuth2 に基づくシングル サインオン システムを開発する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。