Intégrer Okta avecle fournisseur de posture de l'appareil

En intégrant Okta à des services externes dédiés aux données relatives à la posture des appareils, vous pouvez utiliser les signaux d'appareils provenant de ces fournisseurs d'identité (IdP) externes. Ces signaux améliorent la posture de sécurité lorsque vous configurez des exigences de posture rigoureuses dans les stratégies de garantie des appareils et de connexion à des applications.

La fonctionnalité Fournisseur de posture de l'appareil utilise une intégration basée sur SAML pour une communication fluide. Le processus commence par l'envoi par Okta d'une requête SAML à l'IdP externe que vous avez désigné pour la posture de l'appareil. En réponse, l'IdP renvoie une assertion SAML qui est un document XML sécurisé contenant les attributs de posture de l'appareil. Ces attributs sont ensuite disponibles afin que vous puissiez définir et appliquer des politiques granulaires de connexion à des applications. Seuls les appareils qui répondent aux normes de sécurité que vous avez spécifiées peuvent accéder aux ressources protégées par Okta. Grâce à cette intégration, vous pouvez créer des contrôles d'accès dynamiques et adaptatifs basés sur le statut de sécurité en temps réel des appareils des utilisateurs finaux.

Avant de commencer

Configurez un IdP OpenID Connect (OIDC) ou SAML externe en tant que service de conformité pour fournir à Okta des informations sur la posture des appareils. Consultez le contrat de données pour les assertions SAML ou le contrat de données OIDC pour plus de détails sur le format attendu pour l'assertion SAML. Une fois que l'IdP désigné pour la posture de l'appareil envoie des données au bon format, vous pouvez procéder à la configuration dans Okta.

Configurer l'IdP désigné pour la posture de l'appareil dans Okta

  1. Dans l'Admin Console, accédez à SécuritéFournisseurs d'identité.

  2. Cliquez sur Ajouter un fournisseur d'identité.

  3. Sélectionnez l'IdP SAML 2.0 ou OpenID Connect et cliquez sur Suivant.

  4. Configurez l'IdP. Consultez la section Créer un fournisseur d'identité dans Okta pour SAML 2.0 ou OpenID Connect.

    Pour Utilisation de l'IdP : sélectionnez Fournisseur de posture de l'appareil.

Activer l'IdP de posture de l'appareil en tant que fournisseur de garantie des appareils

  1. Dans l'Admin Console, accédez à SécuritéIntégrations d'appareils.

  2. Dans l'onglet Sécurité des points de terminaison, cliquez sur Ajouter une intégration de point de terminaison.
  3. Sélectionnez Fournisseur de posture de l'appareil.
  4. Sélectionnez la plateforme.
  5. Enregistrez la configuration.

Utiliser les signaux d'IdP de posture de l'appareil pour une stratégie de garantie des appareils

Vous pouvez créer ou modifier des stratégies de garantie des appareils afin d'intégrer d'autres signaux provenant de votre IdP en raison de son intégration au Fournisseur de posture de l'appareil. Consultez la section Ajouter une politique de garantie des appareils.

Cette intégration permet des conditions d'assurance plus granulaires dans vos règles de politique :

  • Conforme : l'appareil respecte les normes et les règles de sécurité définies par le système de sécurité externe.
  • Géré  : l'appareil est sous le contrôle et la surveillance de l'équipe informatique ou de sécurité de l'organisation, comme indiqué par les agents de gestion ou les logiciels installés.

Après avoir configuré votre politique de garantie des appareils, vous pouvez l'intégrer à toutes les politiques de connexion à des applications. Consultez la section Ajouter une politique de garantie des appareils à une politique de connexion à des applications.

Si la configuration de votre stratégie de session globale requiert un mot de passe, le Sign-In Widget demande aux utilisateurs de saisir leurs nom d'utilisateur et mot de passe avant de les rediriger vers l'IdP chargé de la posture de l'appareil.

Configurez la règle de politique de connexion à des applications qui exige que les demandes de posture de l'appareil aient la priorité la plus élevée. Ciblez certains utilisateurs en appliquant des conditions telles que Groupe, Plateformeou Zone réseau.

Contrat de données pour les assertions SAML

Okta requiert un contrat de données spécifique de la part de l'IdP chargé de la posture de l'appareil.

  • Okta utilise un nouvel espace de noms : urn:okta:saml:2.0:DevicePosture
  • Ce schéma envoie des éléments Device sous AuthnStatement/AuthnContext/AuthnContextDecl/AuthenticationContextDeclaration/Extension.
  • Voici un exemple de réponse SAML :
    Copier
    <?xml version="1.0" encoding="utf-16"?>
    <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:okta:saml:2.0:DevicePosture" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Device">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="Posture">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="Fact" maxOccurs="unbounded" minOccurs="0">
    <xs:complexType>
    <xs:simpleContent>
    <xs:extension base="xs:string">
    <xs:attribute type="xs:string" name="Name" use="required" />
    <xs:attribute type="xs:string" name="Value" use="required" />
    </xs:extension>
    </xs:simpleContent>
    </xs:complexType>
    </xs:element>
    <xs:element name="Attestation" maxOccurs="unbounded" minOccurs="0">
    <xs:complexType>
    <xs:simpleContent>
    <xs:extension base="xs:string">
    <xs:attribute type="xs:string" name="Type" use="required" />
    </xs:extension>
    </xs:simpleContent>
    </xs:complexType>
    </xs:element>
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    </xs:sequence>
    <xs:attribute type="xs:string" name="ID" />
    <xs:attribute type="xs:string" name="Vendor" />
    <xs:attribute type="xs:string" name="Model" />
    <xs:attribute type="xs:string" name="OS" />
    <xs:attribute type="xs:string" name="OSVersion" />
    </xs:complexType>
    </xs:element>
    </xs:schema>
  • Okta envoie à l'IdP une requête SAML qui inclut urn:okta:saml:2.0:DevicePosture comme requestedAuthnContext minimum.

    Voici un exemple de requête SAML envoyée par Okta à l'IdP chargé de la posture de l'appareil :

    Copier
    <?xml version="1.0" encoding="UTF-8"?>
    <saml2p:AuthnRequest xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" AssertionConsumerServiceURL="https://www.okta.com/sso/saml2/0oa6nxbvzJ7pgD2sk2o4" Destination="https://www.example.com/sso" ID="id259293517205908671989782748" IssueInstant="2018-08-14T22:15:29.753Z" Version="2.0">
    <saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">https://www.okta.com/saml2/service-provider/spqunojxmhwsxjdesder</saml2:Issuer>
    <saml2p:NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" />
    <saml2:Subject xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">
    <saml2:NameID>
    user@example.com
    </saml2:NameID>
    </saml2:Subject>
    <saml2p:RequestedAuthnContext Comparison="minimum">
    <saml2:AuthnContextClassRef xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">urn:okta:saml:2.0:DevicePosture</saml2:AuthnContextClassRef>
    </saml2p:RequestedAuthnContext>
    </saml2p:AuthnRequest>
  • L'IdP chargé de la posture de l'appareil envoie une réponse SAML à Okta. La réponse comprend dans la balise Extension des vérifications de l'appareil structurées selon le schéma. <Fact Name="IsManaged" Value="true" /> est une demande obligatoire. Les autres demandes sont facultatives. Vous pouvez les inclure pour plus de contexte.

    Voici un exemple de réponse SAML envoyée par l'IdP chargé de la posture de l'appareil à Okta :

    Copier
    <?xml version="1.0" encoding="UTF-8"?>
    <samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" Destination="https://www.okta.com/sso/saml2/0oa26ezzJ73dyVy9y2o4" ID="_b77266a5f22f521f3b7d9df984e357e0" InResponseTo="id241879184953548991293661746" IssueInstant="2018-07-25T18:31:46.480Z" Version="2.0">
    <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">https://www.example.com/metadata/idp.xml</saml:Issuer>
    <samlp:Status>
    <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" />
    </samlp:Status>
    <saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="_2bc8c149c66f6d00cb9ba3200a3d5bd8" IssueInstant="2018-07-25T18:31:46.480Z" Version="2.0">
    <saml:Issuer>https://www.example.com/metadata/idp.xml</saml:Issuer>
    <saml:Subject>
    <saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" NameQualifier="https://www.example.com/metadata/idp.xml">user@example.com</saml:NameID>
    <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
    <saml:SubjectConfirmationData InResponseTo="id241879184953548991293661746" NotOnOrAfter="2018-07-25T18:35:06.480Z" Recipient="https://www.okta.com/sso/saml2/0oa26ezzJ73dyVy9y2o4" />
    </saml:SubjectConfirmation>
    </saml:Subject>
    <saml:Conditions NotBefore="2018-07-25T18:31:31.480Z" NotOnOrAfter="2018-07-25T18:35:06.480Z">
    <saml:AudienceRestriction>
    <saml:Audience>https://www.okta.com/saml2/service-provider/spcondtdepbkuyqvmrzi</saml:Audience>
    </saml:AudienceRestriction>
    </saml:Conditions>
    <saml:AuthnStatement AuthnInstant="2018-07-25T18:31:46.480Z" SessionIndex="_00c85fbbdec2247daa24a20dfa9c2e70">
    <saml:AuthnContext>
    <saml:AuthnContextClassRef>urn:okta:saml:2.0:DevicePosture</saml:AuthnContextClassRef>
    <saml:AuthnContextDecl>
    <AuthenticationContextDeclaration xmlns="urn:okta:saml:2.0:DevicePosture">
    <AuthnMethod>
    </AuthnMethod>
    <Extension>
    <Device ID="98bcb804e611de8fb0824b8dbaccfe3cc63171b4" Vendor="Apple" Model="iPhoneX" OS="iOS" OSVersion="10.2" xmlns="urn:okta:saml:2.0:DevicePosture">
    <Posture>
    <Fact Name="IsManaged" Value="true" />
    <Fact Name="IsCompliant" Value="false" />
    <Attestation Type="iOS">eyJhbGciOiJIUzI1NiJ9.eyJp…</Attestation>
    </Posture>
    </Device>
    </Extension>
    </AuthenticationContextDeclaration>
    </saml:AuthnContextDecl>
    </saml:AuthnContext>
    </saml:AuthnStatement>
    </saml:Assertion>
    </samlp:Response>
  • Okta renvoie une erreur urn:oasis:names:tc:SAML:2.0:status:AuthnFailed si l'IdP chargé de la posture de l'appareil n'est pas en mesure de vérifier que l'appareil est géré ou de confiance.

    Copier
    <Status>
    <StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Responder">
    <StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:AuthnFailed" />
    </StatusCode>
    <StatusMessage>DEVICE_NOT_MANAGED</StatusMessage>
    <StatusDetail>Kerberos NEGOTIATE failed or was canceled by the user.</StatusDetail>
    </Status>

Contrat de données OIDC

Pour un IdP OIDC, les sources standard des demandes sont ID token et la réponse UserInfo de l'IdP. L'IdP ajoute les demandes suivantes au jeton d'ID :

Copier
device_context: {
managed: true,
compliance: true,
externalId: "123"
}

Rubriques connexes

Ajouter une politique de garantie des appareils