Back to Checks
Okta Smart Card IdP authenticator is configured and active
authenticator_smart_card_active
Service: authenticatorSeverity: medium
OfficialBuilt-inVerified
Categories:identity-access
Resource Type:NotDefined
The Smart Card IdP authenticator (smart_card_idp) must exist in the org and be in the ACTIVE status so certificate-based authentication is available to users and apps that require it.
The check resolves the authenticator by its built-in key. Missing and inactive authenticators surface as distinct FAIL findings.
Risk
Without an active Smart Card authenticator, users cannot satisfy mandated certificate-based authentication and may be forced onto weaker fallback paths.
- Mandated CAC/PIV use cannot be enforced
- Compliance gaps for environments that require X.509 certificate authentication
- Fallback to password-only sign-in for affected groups
Run this check with Prowler
Run in Prowler CloudRun
prowler okta --checks authenticator_smart_card_activeRecommendation
Ensure the Smart Card IdP authenticator is:
- Present in the org (
key = smart_card_idp) - In the
ACTIVEstatus - Referenced by every Authentication Policy that requires certificate-based authentication
If certificate-based authentication is not in scope for the organization, mute the check rather than disabling the authenticator.
Remediation
Other
1Sign in to the **Okta Admin Console** as a *Super Admin*.
2Navigate to **Security** > **Authenticators**.
3If the **Smart Card IdP** authenticator is not listed, click **Add Authenticator** and add it.
4Open the authenticator and switch its status to **ACTIVE**.
5Bind it to the Authentication Policies that require certificate-based auth.
Check Code
from prowler.lib.check.models import Check, CheckReportOkta
from prowler.providers.okta.services.authenticator.authenticator_client import (
authenticator_client,
)
from prowler.providers.okta.services.authenticator.lib.authenticator_helpers import (
find_authenticator_by_key,
missing_authenticator_resource,
missing_authenticators_scope_finding,
)
class authenticator_smart_card_active(Check):
"""STIG V-273204 / OKTA-APP-001670.
The check requires Okta to configure and activate the Smart Card (PIV) authenticator.
"""
def execute(self) -> list[CheckReportOkta]:
"""Evaluate the Smart Card IdP authenticator status."""
org_domain = authenticator_client.provider.identity.org_domain
missing_scope = authenticator_client.missing_scope.get("authenticators")
if missing_scope:
return [
missing_authenticators_scope_finding(
self.metadata(),
org_domain,
"smart_card_idp",
"Smart Card IdP authenticator",
missing_scope,
)
]
authenticator = find_authenticator_by_key(
authenticator_client.authenticators, "smart_card_idp"
)
resource = authenticator or missing_authenticator_resource(
"smart_card_idp", "Smart Card IdP authenticator"
)
report = CheckReportOkta(
metadata=self.metadata(), resource=resource, org_domain=org_domain
)
if authenticator and authenticator.status.upper() == "ACTIVE":
report.status = "PASS"
report.status_extended = "Smart Card IdP authenticator is ACTIVE."
elif authenticator:
report.status = "FAIL"
report.status_extended = (
f"Smart Card IdP authenticator is not active; current status is "
f"{authenticator.status}."
)
else:
report.status = "FAIL"
report.status_extended = (
"Smart Card IdP authenticator is not active or missing."
)
return [report]