2장. Single Sign-On을 사용하여 JBoss EAP에 배포된 애플리케이션 보안


SSO(Single Sign-On)로 애플리케이션을 보호하여 Red Hat build of Keycloak과 같은 SSO 공급자에게 인증을 위임할 수 있습니다. OpenID Connect(OIDC) 또는 SAML v2(Security Assertion Markup Language v2)를 SSO 프로토콜로 사용할 수 있습니다.

SSO를 사용하여 애플리케이션을 보호하려면 다음 절차를 따르십시오.

2.1. Single Sign-On으로 보안을 위해 예제 애플리케이션 생성

JBoss EAP에 배포할 웹 애플리케이션을 생성하고 OpenID Connect(OIDC) 또는 SAML(Security Assertion Mark-up Language)을 사용하여 SSO(Single Sign-On)로 보호합니다.

참고

다음 절차는 예제로만 제공됩니다. 보안하려는 애플리케이션이 이미 있는 경우 이를 건너뛰고 Red Hat build of Keycloak에서 영역 및 사용자 생성 으로 직접 이동할 수 있습니다.

2.1.1. 웹 애플리케이션 개발을 위한 Maven 프로젝트 생성

웹 애플리케이션을 생성하려면 필수 종속성 및 디렉터리 구조가 포함된 Maven 프로젝트를 생성합니다.

중요

다음 절차는 예제로만 제공되며 프로덕션 환경에서 사용해서는 안 됩니다. JBoss EAP용 애플리케이션 생성에 대한 자세한 내용은 JBoss EAP 배포를 위한 애플리케이션 개발 시작하기 를 참조하십시오.

사전 요구 사항

프로세스

  1. mvn 명령을 사용하여 Maven 프로젝트를 설정합니다. 명령은 프로젝트에 대한 디렉터리 구조와 pom.xml 구성 파일을 생성합니다.

    구문

    $ mvn archetype:generate \
    -DgroupId=${group-to-which-your-application-belongs} \
    -DartifactId=${name-of-your-application} \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-webapp \
    -DinteractiveMode=false
    Copy to Clipboard Toggle word wrap

    예제

    $ mvn archetype:generate \
    -DgroupId=com.example.app \
    -DartifactId=simple-webapp-example \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-webapp \
    -DinteractiveMode=false
    Copy to Clipboard Toggle word wrap

  2. 애플리케이션 루트 디렉터리로 이동합니다.

    구문

    $ cd <name-of-your-application>
    Copy to Clipboard Toggle word wrap

    예제

    $ cd simple-webapp-example
    Copy to Clipboard Toggle word wrap

  3. 생성된 pom.xml 파일의 내용을 다음 텍스트로 바꿉니다.

    <?xml version="1.0" encoding="UTF-8"?>
    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.example.app</groupId>
      <artifactId>simple-webapp-example</artifactId>
      <version>1.0-SNAPSHOT</version>
      <packaging>war</packaging>
    
      <name>simple-webapp-example Maven Webapp</name>
      <!-- FIXME change it to the project's website -->
      <url>http://www.example.com</url>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>11</maven.compiler.source>
            <maven.compiler.target>11</maven.compiler.target>
            <version.maven.war.plugin>3.4.0</version.maven.war.plugin>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>jakarta.servlet</groupId>
                <artifactId>jakarta.servlet-api</artifactId>
                <version>6.0.0</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    
        <build>
            <finalName>${project.artifactId}</finalName>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>${version.maven.war.plugin}</version>
                </plugin>
                <plugin>
                    <groupId>org.wildfly.plugins</groupId>
                    <artifactId>wildfly-maven-plugin</artifactId>
                    <version>4.2.2.Final</version>
                </plugin>
            </plugins>
        </build>
    </project>
    Copy to Clipboard Toggle word wrap

검증

  • 애플리케이션 루트 디렉터리에 다음 명령을 입력합니다.

    $ mvn install
    Copy to Clipboard Toggle word wrap

    다음과 유사한 출력이 표시됩니다.

    ...
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 0.795 s
    [INFO] Finished at: 2022-04-28T17:39:48+05:30
    [INFO] ------------------------------------------------------------------------
    Copy to Clipboard Toggle word wrap

2.1.2. 웹 애플리케이션 생성

로그인한 사용자의 주체에서 얻은 사용자 이름을 반환하는 서블릿이 포함된 웹 애플리케이션을 생성합니다. 로그인한 사용자가 없는 경우 서블릿은 "NO AUTHENTICATED USER" 텍스트를 반환합니다.

이 절차에서 &lt ;application_home >은 애플리케이션의 pom.xml 구성 파일이 포함된 디렉터리를 나타냅니다.

사전 요구 사항

프로세스

  1. Java 파일을 저장할 디렉터리를 만듭니다.

    구문

    $ mkdir -p src/main/java/<path_based_on_artifactID>
    Copy to Clipboard Toggle word wrap

    예제

    $ mkdir -p src/main/java/com/example/app
    Copy to Clipboard Toggle word wrap

  2. 새 디렉터리로 이동합니다.

    구문

    $ cd src/main/java/<path_based_on_artifactID>
    Copy to Clipboard Toggle word wrap

    예제

    $ cd src/main/java/com/example/app
    Copy to Clipboard Toggle word wrap

  3. 다음 콘텐츠를 사용하여 SecuredServlet.java 파일을 생성합니다.

    package com.example.app;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.security.Principal;
    
    import jakarta.servlet.ServletException;
    import jakarta.servlet.annotation.WebServlet;
    import jakarta.servlet.http.HttpServlet;
    import jakarta.servlet.http.HttpServletRequest;
    import jakarta.servlet.http.HttpServletResponse;
    
    /**
     * A simple secured HTTP servlet. It returns the user name of obtained
     * from the logged-in user's Principal. If there is no logged-in user,
     * it returns the text "NO AUTHENTICATED USER".
     */
    
    @WebServlet("/secured")
    public class SecuredServlet extends HttpServlet {
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            try (PrintWriter writer = resp.getWriter()) {
                writer.println("<html>");
                writer.println("  <head><title>Secured Servlet</title></head>");
                writer.println("  <body>");
                writer.println("    <h1>Secured Servlet</h1>");
                writer.println("    <p>");
                writer.print(" Current Principal '");
                Principal user = req.getUserPrincipal();
                writer.print(user != null ? user.getName() : "NO AUTHENTICATED USER");
                writer.print("'");
                writer.println("    </p>");
                writer.println("  </body>");
                writer.println("</html>");
            }
        }
    
    }
    Copy to Clipboard Toggle word wrap
  4. 애플리케이션 루트 디렉터리에서 다음 명령을 사용하여 애플리케이션을 컴파일합니다.

    $ mvn package
    ...
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 1.015 s
    [INFO] Finished at: 2022-04-28T17:48:53+05:30
    [INFO] ------------------------------------------------------------------------
    Copy to Clipboard Toggle word wrap
  5. 애플리케이션을 배포합니다.

    $ mvn wildfly:deploy
    Copy to Clipboard Toggle word wrap

검증

  • 브라우저에서 http://localhost:8080/simple-webapp-example/secured 로 이동합니다.

    다음 메시지가 표시됩니다.

    Secured Servlet
    Current Principal 'NO AUTHENTICATED USER'
    Copy to Clipboard Toggle word wrap

    인증 메커니즘이 추가되지 않으므로 애플리케이션에 액세스할 수 있습니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동