빠른 시작: Liberty for Java 백엔드 앱
App ID를 사용하면 API 엔드포인트를 쉽게 보호하고 Liberty for Java 백엔드 애플리케이션의 보안을 유지할 수 있습니다. 이 안내서를 사용하면 20분 이내에 간단한 인증 플로우를 신속하게 시작하고 실행할 수 있습니다.
- 보호된 리소스를 요청하려면 클라이언트에 액세스 토큰이 있어야 합니다. 1단계에서 클라이언트가 App ID에 토큰을 요청합니다. 액세스 토큰을 얻는 데 관한 자세한 정보는 토큰 확보를 참조하십시오.
- App ID에서 토큰을 리턴합니다.
- 클라이언트에서 액세스 토큰을 사용하여 보호된 리소스에 대한 액세스를 요청합니다.
- 리소스가 구조, 만기, 서명, 대상 및 기타 존재하는 필드를 포함하여 토큰을 유효성 검증합니다. 토큰이 올바르지 않으면 리소스 서버에서 액세스를 거부합니다. 토큰 유효성 검증에 성공하면 데이터를 리턴합니다.
시작하기 전에
Liberty for Java 백엔드 애플리케이션에서 App ID을(를) 시작하기 전에 다음과 같은 전제조건이 준비되어 있어야 합니다.
플로우를 사용해 볼 수 있는 앱이 없습니까? App ID 은 단순 Liberty for Java 샘플 앱을 제공합니다.
인증 정보 얻기
다음 두 가지 방법 중 하나로 인증 정보를 얻을 수 있습니다.
-
App ID 대시보드의 애플리케이션 탭으로 이동하십시오. 애플리케이션이 없는 경우 애플리케이션 추가를 클릭하여 새 애플리케이션을 작성하십시오.
-
/management/v4/<tenantID>/applications엔드포인트에 대한 POST 요청을 작성합니다.Request format: ```sh {: codeblock} curl -X POST \ https://us-south.appid.cloud.ibm.com/management/v4/<tenantID>/applications/ \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <IAMToken>' \ -d '{"name": "ApplicationName"}' ``` Example response: ```json {: screen} { "clientId": "xxxxx-34a4-4c5e-b34d-d12cc811c86d", "tenantId": "xxxxx-9b1f-433e-9d46-0a5521f2b1c4", "secret": "ZDk5YWZkYmYt*******", "name": "app1", "oAuthServerUrl": "https://us-south.appid.cloud.ibm.com/oauth/v4/xxxxx-9b1f-433e-9d46-0a5521f2b1c4", "profilesUrl": "https://us-south.appid.cloud.ibm.com", "discoveryEndpoint": "https://us-south.appid.cloud.ibm.com/oauth/v4/xxxxxx-9b1f-433e-9d46-0a5521f2b1c4/.well-known/openid-configuration" } ```
server.xml 파일 구성
-
server.xml파일을 여십시오. -
featureManager섹션에 다음 기능을 추가하십시오. 일부 기능은 Liberty와 함께 기본 제공될 수 있습니다. 서버를 실행할 때 오류가 수신되면 Liberty 설치의 bin 디렉토리에서.installUtility install {name_of_server}를 실행하여 설치할 수 있습니다.<featureManager> <feature>appSecurity-2.0</feature> <feature>openidConnectClient-1.0</feature> <feature>ssl-1.0</feature> <feature>servlet-3.1</feature> </featureManager> -
server.xml파일에 다음 코드를 추가하여 SSL을 구성하십시오.<keyStore id="defaultKeyStore" password="{password}"/> <keyStore id="RootCA" password="{password}" location="${server.config.dir}/resources/security/{myTrustStore}"/> <ssl id="{sslID}" keyStoreRef="defaultKeyStore" trustStoreRef="{truststore-ref}"/> -
Open ID Connect 클라이언트 기능을 작성한 후 다음과 같은 플레이스홀더를 정의하십시오. 사용자가 얻은 인증 정보를 사용하여 플레이스홀더를 채우십시오.
<openidConnectClient id="oidc-client-simple-liberty-backend-app" inboundPropagation="required" jwkEndpointUrl="<region>.appid.cloud.ibm.com/oauth/v4/<tenantID>/publickeys" issuerIdentifier="<region>.appid.cloud.ibm.com/oauth/v4/<tenantID>" signatureAlgorithm="RS256" audiences="{client-id}" sslRef="oidcClientSSL" />Liberty for Java 앱에 대한 OIDC 요소 변수 가변 설명 id애플리케이션 이름입니다. inboundPropagation토큰에서 받은 정보를 전파하려면 값을 "필수"로 설정해야 합니다. jwkEndpointUrl토큰을 유효성 검증하기 위해 키를 얻는 데 사용하는 엔드포인트입니다. 사용 가능한 지역에 대해 자세히 알아보십시오. 이전에 작성한 인증 정보에서 테넌트 ID를 찾을 수 있습니다. issuerIdentifier발행자 ID를 통해 권한 서버를 정의합니다. 사용 가능한 지역에 대해 자세히 알아보십시오. 이전에 작성한 인증 정보에서 테넌트 ID를 찾을 수 있습니다. signatureAlgorithm"RS256"으로 지정됩니다. audiences기본적으로 토큰은 애플리케이션 인증 정보에서 찾을 수 있는 App ID 클라이언트 ID에 대해 발행됩니다. sslRef사용할 SSL 구성의 이름입니다. -
특수 주제 유형을
ALL_AUTHENTICATED_USERS로 정의하십시오.<application id="simple-liberty-backend-app" location="location-of-your-war-file" name="simple-liberty-backend-app" type="war"> <application-bnd> <security-role name="myrole"> <special-subject type="ALL_AUTHENTICATED_USERS"/> </security-role> </application-bnd> </application>
web.xml 파일 구성
web.xml 파일에서 보호할 애플리케이션 영역을 정의하십시오.
-
보안 역할을 정의하십시오. 이 역할은
server.xml파일에서 정의한 역할과 동일해야 합니다.<security-role> <role-name>myrole</role-name> </security-role> -
보안 제한조건을 정의하십시오.
<security-constraint> <display-name>Security Constraints</display-name> <web-resource-collection> <web-resource-name>ProtectedArea</web-resource-name> <url-pattern>/api/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>myrole</role-name> </auth-constraint> <user-data-constraint> <transport-guarantee>NONE</transport-guarantee> </user-data-constraint> </security-constraint>
구성 테스트
이제 초기 설치를 완료했으므로 앱을 빌드하고 구성을 테스트하여 모두 제대로 작동하는지 확인하십시오.
-
애플리케이션 디렉토리로 변경하십시오.
-
애플리케이션을 빌드하십시오.
server run -
보호된 엔드포인트에 대한 요청을 작성하십시오. 오류가 리턴됩니다.
-
이전 단계에서 얻은 액세스 토큰을 사용하여 엔드포인트에 요청을 하십시오. 이제 보호된 엔드포인트에 액세스할 수 있습니다. 응답에 예상 내용이 포함되었는지 확인하십시오.