SAML 및 OIDC 앱에서 매번 사용자 인증을 강제하는 방법

활성 세션이 있더라도 사용자가 애플리케이션에 액세스할 때마다 인증하도록 해야 하는 경우가 있습니다. 이는 보안을 강화하거나 규정 준수 요구 사항을 충족하는 데 유용할 수 있습니다. OpenID Connect(OIDC) 및 SAML 애플리케이션 모두에서 이러한 동작을 구성하는 방법은 다음과 같습니다.


OIDC 앱의 경우: prompt=login 매개변수 사용

OpenID Connect(OIDC)를 사용하면 권한 부여 요청에 prompt=login 매개변수를 포함하여 사용자 인증을 강제할 수 있습니다. 이렇게 하면 기존 세션과 관계없이 사용자가 앱에 액세스할 때마다 로그인하라는 메시지가 표시됩니다.

예: OIDC 권한 부여 요청

https://login.microsoftonline.com/common/oauth2/v2.0/authorize
?response_type=code
&client_id=blf6xxxx-xxxx-xxxx-21cd2263xxxx
&redirect_uri=https://jwt.ms
&scope=openid profile User.Read
&prompt=login

주요 매개변수 설명

  • response_type=code: 권한 부여 코드 흐름을 지정합니다.
  • client_id: 애플리케이션의 고유 식별자입니다.
  • redirect_uri: 인증 후 사용자를 리디렉션할 URI입니다.
  • scope: 앱이 요청하는 권한을 정의합니다.
  • prompt=login: 사용자가 매번 인증하도록 강제합니다.

SAML 앱의 경우: ForceAuthn 특성 사용

SAML에서는 ForceAuthn 특성을 true 로 설정하여 인증 요청에서 동일한 효과를 얻을 수 있습니다. 이렇게 하면 활성 세션이 있더라도 ID 공급자(IdP)가 사용자에게 인증을 요구합니다.

예: SAML 인증 요청

<samlp:AuthnRequest 
    xmlns="urn:oasis:names:tc:SAML:2.0:metadata" 
    ID="C2d2FH4oiJ5kL6mN7oPQgR9tOUvIw" 
    Version="2.0" 
    IssueInstant="2013-03-18T03:28:54.1839884Z" 
    xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
    <ForceAuthn>true</ForceAuthn>
    <Issuer 
        xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
        https://www.contoso.com
    </Issuer>
</samlp:AuthnRequest>

주요 특성 설명

  • ForceAuthn=true: IdP가 사용자에게 인증을 요구하도록 합니다.
  • Issuer: 인증 요청을 하는 엔터티를 식별합니다.

인증 강제가 필요한 이유

사용자가 애플리케이션에 액세스할 때마다 인증을 강제하면 다음과 같은 시나리오에서 유용할 수 있습니다.

  • 보안 강화: 오래된 세션으로 인한 무단 액세스를 방지합니다.
  • 규정 준수: 빈번한 인증에 대한 규제 요구 사항을 충족합니다.
  • 민감한 애플리케이션: 중요하거나 기밀 데이터를 처리하는 앱을 보호합니다.

결론

OIDC를 사용하든 SAML을 사용하든 사용자 인증을 강제하면 애플리케이션 액세스에 대한 보안 수준과 제어 수준이 높아집니다. 이 기능을 효과적으로 구현하려면 OIDC 앱에서는 prompt=login 을, SAML 앱에서는 ForceAuthn=true 을 사용하세요.

댓글 남기기