2.3. OIDC를 사용하여 애플리케이션 보안


외부 OpenID 공급자를 사용하여 애플리케이션을 보호하려면 JBoss EAP 기본 OpenID Connect(OIDC) 클라이언트를 사용합니다. OIDC는 JBoss EAP와 같은 클라이언트가 OpenID 공급자가 수행한 인증을 기반으로 사용자 ID를 확인할 수 있는 ID 계층입니다. 예를 들어 Red Hat build of Keycloak을 OpenID 공급자로 사용하여 JBoss EAP 애플리케이션을 보호할 수 있습니다.

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

2.3.1. JBoss EAP에서 OpenID Connect를 사용한 애플리케이션 보안

OpenID 공급자를 사용하여 애플리케이션을 보호하면 보안 도메인 리소스를 로컬로 구성할 필요가 없습니다. elytron-oidc-client 하위 시스템은 JBoss EAP에서 기본 OpenID Connect(OIDC) 클라이언트를 제공하여 OpenID 공급자(OP)와 연결합니다. JBoss EAP는 OpenID 공급자 구성에 따라 애플리케이션의 가상 보안 도메인을 자동으로 생성합니다. elytron-oidc-client 하위 시스템은 Relying Party(RP) 역할을 합니다.

참고

JBoss EAP 네이티브 OIDC 클라이언트는 RP 시작 로그 아웃을 지원하지 않습니다.

중요

Red Hat build of Keycloak과 함께 OIDC 클라이언트를 사용하는 것이 좋습니다. JSON 웹 토큰(JWT)인 액세스 토큰을 사용하도록 구성할 수 있고 RS256, RS384, ES256, ES384 또는 ES512 서명 알고리즘을 사용하도록 구성할 수 있는 경우 다른 OpenID 공급자를 사용할 수 있습니다.

OIDC 사용을 활성화하려면 elytron-oidc-client 하위 시스템 또는 애플리케이션 자체를 구성할 수 있습니다. JBoss EAP는 다음과 같이 OIDC 인증을 활성화합니다.

  • 애플리케이션을 JBoss EAP에 배포할 때 elytron-oidc-client 하위 시스템은 배포를 검사하여 OIDC 인증 메커니즘이 필요한지 감지합니다.
  • 하위 시스템에서 elytron-oidc-client 하위 시스템 또는 애플리케이션 배포 설명자 중 하나에서 배포에 대한 OIDC 구성을 감지하면 JBoss EAP는 애플리케이션에 대한 OIDC 인증 메커니즘을 활성화합니다.
  • 하위 시스템이 두 위치에서 OIDC 구성을 감지하면 elytron-oidc-client 하위 시스템 secure-deployment 속성의 구성이 애플리케이션 배포 설명자의 구성보다 우선합니다.
배포 구성

배포 설명자를 사용하여 OIDC로 애플리케이션을 보호하려면 다음과 같이 애플리케이션의 배포 구성을 업데이트합니다.

  • 애플리케이션 배포 설명자 web.xml 파일에서 auth-method 속성을 OIDC 로 설정합니다.

배포 설명자 업데이트 예

<login-config>
    <auth-method>OIDC</auth-method>
</login-config>

  • OIDC 구성 정보를 사용하여 websites -INF 디렉터리에 oidc.json 이라는 파일을 생성합니다.

    oidc.json 내용의 예

    {
      "client-id" : "customer-portal", 
    1
    
      "provider-url" : "http://localhost:8180/realms/demo", 
    2
    
      "ssl-required" : "external", 
    3
    
       "credentials" : {
          "secret" : "234234-234234-234234" 
    4
    
       }
    }

    1
    OpenID 공급자를 사용하여 OIDC 클라이언트를 식별하는 이름입니다.
    2
    OpenID 공급자 URL입니다.
    3
    외부 요청에 HTTPS가 필요합니다.
    4
    OpenID 공급자에 등록된 클라이언트 시크릿입니다.
하위 시스템 구성

다음과 같은 방법으로 elytron-oidc-client 하위 시스템을 구성하여 OIDC로 애플리케이션을 보호할 수 있습니다.

  • 각 애플리케이션에 동일한 OpenID 공급자를 사용하는 경우 여러 배포에 대한 단일 구성을 생성합니다.
  • 다른 애플리케이션에 다른 OpenID 공급자를 사용하는 경우 각 배포에 대해 다른 구성을 생성합니다.

단일 배포에 대한 XML 구성의 예:

<subsystem xmlns="urn:wildfly:elytron-oidc-client:1.0">
    <secure-deployment name="DEPLOYMENT_RUNTIME_NAME.war"> 
1

        <client-id>customer-portal</client-id> 
2

        <provider-url>http://localhost:8180/realms/demo</provider-url> 
3

        <ssl-required>external</ssl-required> 
4

        <credential name="secret" secret="0aa31d98-e0aa-404c-b6e0-e771dba1e798" /> 
5

    </secure-deployment
</subsystem>
1
배포 런타임 이름입니다.
2
OpenID 공급자를 사용하여 OIDC 클라이언트를 식별하는 이름입니다.
3
OpenID 공급자 URL입니다.
4
외부 요청에 HTTPS가 필요합니다.
5
OpenID 공급자에 등록된 클라이언트 시크릿입니다.

동일한 OpenID 공급자를 사용하여 여러 애플리케이션을 보호하려면 예와 같이 공급자 를 별도로 구성합니다.

<subsystem xmlns="urn:wildfly:elytron-oidc-client:1.0">
    <provider name="${OpenID_provider_name}">
        <provider-url>http://localhost:8080/realms/demo</provider-url>
        <ssl-required>external</ssl-required>
    </provider>
    <secure-deployment name="customer-portal.war"> 
1

        <provider>${OpenID_provider_name}</provider>
        <client-id>customer-portal</client-id>
        <credential name="secret" secret="0aa31d98-e0aa-404c-b6e0-e771dba1e798" />
    </secure-deployment>
    <secure-deployment name="product-portal.war"> 
2

        <provider>${OpenID_provider_name}</provider>
        <client-id>product-portal</client-id>
        <credential name="secret" secret="0aa31d98-e0aa-404c-b6e0-e771dba1e798" />
    </secure-deployment>
</subsystem>
1
배포: customer-portal.war
2
다른 배포: product-portal.war

2.3.2. Red Hat build of Keycloak에서 OIDC 클라이언트 생성

JBoss EAP와 함께 사용하여 애플리케이션을 보호하기 위해 Red Hat build of Keycloak에서 OpenID Connect(OIDC) 클라이언트를 생성합니다.

다음 절차에서는 테스트를 위해 Red Hat build of Keycloak을 사용하여 JBoss EAP에 배포된 애플리케이션 보안을 시작하는 데 필요한 최소 단계를 간략하게 설명합니다. 자세한 구성은 Keycloak 서버 관리 가이드의 Red Hat 빌드에서 OpenID Connect 클라이언트 관리를 참조하십시오.

사전 요구 사항

프로세스

  1. Red Hat build of Keycloak Admin Console으로 이동합니다.
  2. 클라이언트를 생성합니다.

    1. 클라이언트 를 클릭한 다음 클라이언트 생성을 클릭합니다.
    2. Client 유형이 OpenID Connect 로 설정되어 있는지 확인합니다.
    3. 클라이언트 ID를 입력합니다. 예를 들면 jbeap-oidc 입니다.
    4. 다음을 클릭합니다.
    5. 기능 구성 탭에서 인증 흐름이 표준 흐름직접 액세스 권한 부여 로 설정되어 있는지 확인합니다.
    6. 다음을 클릭합니다.
    7. 로그인 설정 탭에서 Valid redirect URI 값을 입력합니다. 인증이 성공한 후 페이지를 리디렉션해야 하는 URL을 입력합니다(예: http://localhost:8080/simple-webapp-example/secured/* ).
    8. 저장을 클릭합니다.
  3. 어댑터 구성을 확인합니다.

    1. 작업을 클릭한 다음 어댑터 구성 다운로드를 클릭합니다.
    2. 연결 매개 변수를 보려면 Format Option 으로 Keycloak OIDC JSON 을 선택합니다.

      {
        "realm": "example_realm",
        "auth-server-url": "http://localhost:8180/",
        "ssl-required": "external",
        "resource": "jbeap-oidc",
        "public-client": true,
        "confidential-port": 0
      }

      Red Hat build of Keycloak을 ID 공급자로 사용하도록 JBoss EAP 애플리케이션을 구성할 때 다음과 같이 매개변수를 사용합니다.

      "provider-url" : "http://localhost:8180/realms/example_realm",
      "ssl-required": "external",
      "client-id": "jbeap-oidc",
      "public-client": true,
      "confidential-port": 0

2.3.3. OpenID Connect를 사용하여 웹 애플리케이션 보안

배포 구성을 업데이트하거나 elytron-oidc-client 하위 시스템을 구성하여 애플리케이션을 보호할 수 있습니다.

프로세스에서 생성된 애플리케이션을 사용하는 경우 웹 애플리케이션 생성 에서는 Principal의 값은 OpenID 공급자의 ID 토큰에서 가져옵니다. 기본적으로 보안 주체는 토큰의 "sub" 클레임 값입니다. 또한 "email", "preferred_username", "name", "given_name", "family_name" 또는 "nickname" 클레임의 값을 Principal로 사용할 수도 있습니다. 다음 위치 중 하나에서 Principal로 사용할 ID 토큰의 클레임 값을 지정합니다.

  • elytron-oidc-client 하위 시스템 특성 principal-attribute.
  • oidc.json 파일.

OIDC를 사용하도록 애플리케이션을 구성하는 방법은 다음 두 가지가 있습니다.

  • elytron-oidc-client 하위 시스템을 구성하여 다음을 수행합니다.

    애플리케이션 배포에 구성을 추가하지 않으려면 이 방법을 사용합니다.

  • 배포 구성 업데이트

    서버에 구성을 추가하지 않고 구성을 애플리케이션 배포 내에 유지하려는 경우 이 방법을 사용합니다.

사전 요구 사항

  • JBoss EAP에 애플리케이션을 배포했습니다.

프로세스

  1. 애플리케이션 리소스를 보호하도록 애플리케이션의 web.xml 을 구성합니다.

    <?xml version="1.0" encoding="UTF-8"?>
    
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
        metadata-complete="false">
    
        <security-constraint>
            <web-resource-collection>
                <web-resource-name>secured</web-resource-name>
                <url-pattern>/secured</url-pattern>
            </web-resource-collection>
    
            <auth-constraint>
                <role-name>Admin</role-name>    
    1
    
            </auth-constraint>
        </security-constraint>
    
        <security-role>
            <role-name>*</role-name>
        </security-role>
    </web-app>
    1
    Admin 역할이 있는 사용자만 애플리케이션에 액세스할 수 있습니다. 역할이 있는 사용자가 애플리케이션에 액세스할 수 있도록 허용하려면 와일드카드 **role-name 의 값으로 사용합니다.
  2. OpenID Connect로 애플리케이션을 보호하려면 배포 구성을 업데이트하거나 elytron-oidc-client 하위 시스템을 구성합니다.

    참고

    배포 구성 및 elytron-oidc-client 하위 시스템에서 OpenID Connect를 구성하는 경우 elytron-oidc-client 하위 시스템의 구성이 애플리케이션 배포 설명자의 구성보다 우선합니다.

    • 배포 구성 업데이트.

      1. 인증 방법을 OIDC로 지정하는 애플리케이션의 web.xml 에 로그인 구성을 추가합니다.

        <web-app>
        ...
            <login-config>
                <auth-method>OIDC</auth-method>     
        1
        
            </login-config>
        ...
        </web-app>
        1
        OIDC를 사용하여 애플리케이션을 보호합니다.
      2. 다음과 같이 WEB-INF 디렉토리에 파일 oidc.json 을 생성하십시오.

        {
          "provider-url" : "http://localhost:8180/realms/example_realm",
          "ssl-required": "external",
          "client-id": "jbeap-oidc",
          "public-client": true,
          "confidential-port": 0
        }
    • elytron-oidc-client 하위 시스템 구성:

      • 애플리케이션을 보호하려면 다음 관리 CLI 명령을 사용하십시오.

        /subsystem=elytron-oidc-client/secure-deployment=simple-webapp-example.war/:add(client-id=jbeap-oidc,provider-url=http://localhost:8180/realms/example_realm,public-client=true,ssl-required=external)
  3. 애플리케이션 루트 디렉터리에서 다음 명령을 사용하여 애플리케이션을 컴파일합니다.

    $ mvn package
  4. 애플리케이션을 배포합니다.

    $ mvn wildfly:deploy

검증

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

    Red Hat build of Keycloak 로그인 페이지로 리디렉션됩니다.

  2. Red Hat build of Keycloak에 정의된 사용자의 인증 정보로 로그인할 수 있습니다.

이제 애플리케이션이 OIDC를 사용하여 보호됩니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동