Authentification à l'aide d'un fournisseur d'identités sociales personnalisé
Configurez un domaine d'identité pour l'authentification à l'aide d'un fournisseur d'identités sociales personnalisé (IdP).
Vous pouvez configurer les métadonnées d'un fournisseur d'identités sociales personnalisé à l'aide des exemples ci-dessous.
/admin/v1/SocialIdentityProviderMetadata
.- pour ajouter un fournisseur de niveau global, appelez le point d'extrémité
<domainURL>/admin/v1/SocialIdentityProviderMetadata
. - Pour ajouter un fournisseur de niveau client, appelez le point d'extrémité
<idcs-oracle-url>/admin/v1/SocialIdentityProviderMetadata
.
Si des fournisseurs d'identités sociales personnalisés portant le même nom ont été définis à l'aide de
SocialIdentityProviderMetadata
au niveau global et au niveau du locataire, le fournisseur d'identités sociales personnalisé défini au niveau du locataire a priorité.- En le sélectionnant dans la console. Sélectionnez Sécurité, puis Fournisseurs d'identités, puis Ajouter des médias sociaux IdP et choisissez le nouveau fournisseur d'identités.
- À partir de l'API REST
/admin/v1/SocialIdentityProviders
.
Le nouveau fournisseur d'identités sociales personnalisé est disponible en tant que type de fournisseur d'identités sociales.
Cas d'utilisation de connexion du fournisseur d'identités sociales personnalisé
Ces cas d'utilisation de connexion montrent comment modifier AuthorizePhase
, loginScopes
, tokenPhase
et userInfoPhase
selon le fournisseur.
Dans ces exemples, les expressions (commençant par $) font référence aux valeurs de paramètre qui ne sont pas constantes :
$socialIdentityProvider
représente la ressourceSocialIdentityProvider
correspondante. Par exemple,$socialIdentityProvider.consumerKey
fait référence à la clé secrète client configurée dans le profil de fournisseur d'identités sociales propre au locataire.${state}
est l'état généré par l'exécution des domaines d'identité lors de l'envoi de la demande d'autorisation aux médias sociaux IdP.${redirectUri}
est l'URL de rappel propre au locataire générée par l'exécution du domaine d'identité.${scope}
fait référence à :- Dans le cas d'utilisation de connexion, chaîne d'étendue spécifiée en tant que valeur de l'attribut
loginScopes
. Dans le cas d'utilisation du provisionnement, chaîne de portée spécifiée en tant que valeur de l'attribut
provisioningScopes
.
- Dans le cas d'utilisation de connexion, chaîne d'étendue spécifiée en tant que valeur de l'attribut
${clientCredentials}
est la représentation encodée de base-64 standard de l'ID client et de la clé secrète client, comme requis dans l'en-tête d'autorisation pour le modèle d'authentification de base.${authorizationCode}
fait référence au code d'autorisation reçu avec rappel par les réseaux sociaux IdP.
Dans les sections suivantes, il existe des exemples de métadonnées pour le cas d'utilisation de connexion, suivis de deux exemples. Puis, les exemples de métadonnées pour le cas d'utilisation de provisionnement.
Exemples de métadonnées de connexion du fournisseur d'identités sociales personnalisé
{
"type": "SampleProviderForLogin",
"status": "enabled",
"idAttribute": "email",
"capabilities": [
"login"
],
"authorizePhase": {
"loginScopes": "<scope string>",
"url": "<Authorization endpoint>"
},
"authorizePhaseParameters": [
{
"value": "${socialIdentityProvider.consumerKey}",
"name": "client_id"
},
{
"value": "code",
"name": "response_type"
},
{
"value": "${scope}",
"name": "scope"
},
{
"value": "${state}",
"name": "state"
},
{
"value": "${redirectUri}",
"name": "redirect_uri"
}
],
"tokenPhase": {
"url": "<Token endpoint>",
"method": "<HTTP method for Token endpoint - get/post>"
},
"tokenPhaseHeaders": [
{
"value": "application/json",
"name": "Accept"
},
{
"value": "Basic ${clientCredentials}",
"name": "Authorization"
}
],
"tokenPhaseParameters": [
{
"value": "${socialIdentityProvider.consumerKey}",
"name": "client_id"
},
{
"value": "${socialIdentityProvider.consumerSecret}",
"name": "client_secret"
},
{
"value": "${redirectUri}",
"name": "redirect_uri"
},
{
"value": "${authorizationCode}",
"name": "code"
},
{
"value": "authorization_code",
"name": "grant_type"
}
],
"userInfoPhase": {
"url": "<UserInfo endpoint>",
"method": "<HTTP method for UserInfo endpoint - get/post>"
},
"userInfoPhaseHeaders": [
{
"value": "*/*",
"name": "Accept"
},
{
"value": "token ${accessToken}",
"name": "Authorization"
}
],
"userInfoPhaseParameters": [
{
"name": "access_token",
"value": "${accessToken}"
}
],
"userInfoAttributeMappings": [
{
"idpAttribute": "firstname",
"idcsAttribute": "given_name"
},
{
"idpAttribute": "lastname",
"idcsAttribute": "family_name"
},
{
"idpAttribute": "email.primary",
"idcsAttribute": "email"
}
],
"iconUrl": "<icon url>",
"schemas": [
"urn:ietf:params:scim:schemas:oracle:idcs:SocialIdentityProviderMetadata"
]
}
Exemple de fournisseur d'identités sociales personnalisé GitHub
{
"type": "GitHub",
"status": "enabled",
"idAttribute": "email",
"capabilities": [
"login"
],
"authorizePhase": {
"loginScopes": "user user:email",
"url": "http://github.com/login/oauth/authorize"
},
"authorizePhaseParameters": [
{
"value": "${socialIdentityProvider.consumerKey}",
"name": "client_id"
},
{
"value": "code",
"name": "response_type"
},
{
"value": "${scope}",
"name": "scope"
},
{
"value": "${state}",
"name": "state"
},
{
"value": "${redirectUri}",
"name": "redirect_uri"
}
],
"tokenPhase": {
"url": "https://github.com/login/oauth/access_token",
"method": "post"
},
"tokenPhaseHeaders": [
{
"value": "application/json",
"name": "Accept"
},
{
"value": "Basic ${clientCredentials}",
"name": "Authorization"
}
],
"tokenPhaseParameters": [
{
"value": "${socialIdentityProvider.consumerKey}",
"name": "client_id"
},
{
"value": "${socialIdentityProvider.consumerSecret}",
"name": "client_secret"
},
{
"value": "${redirectUri}",
"name": "redirect_uri"
},
{
"value": "${authorizationCode}",
"name": "code"
},
{
"value": "authorization_code",
"name": "grant_type"
}
],
"userInfoPhase": {
"url": "https://api.github.com/user",
"method": "get"
},
"userInfoPhaseHeaders": [
{
"value": "*/*",
"name": "Accept"
},
{
"value": "token ${accessToken}",
"name": "Authorization"
}
],
"userInfoPhaseParameters": [
{
"name": "access_token",
"value": "${accessToken}"
}
],
"userInfoAttributeMappings": [
{
"idpAttribute": "name",
"idcsAttribute": "given_name"
}
],
"iconUrl": "<<iconURL>>",
"schemas": [
"urn:ietf:params:scim:schemas:oracle:idcs:SocialIdentityProviderMetadata"
]
}
Domaines d'identité en tant que fournisseur d'identité (avec mappage de nom d'utilisateur)
Définissez le courriel comme facultatif dans les domaines d'identité à l'aide d'une opération de correctif dans https://{{host}}/admin/v1/IdentitySettings/IdentitySettings
.
{
{
"schemas":
[
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
],
"Operations":
[
{
"op": "replace",
"path": "primaryEmailRequired",
"value": false
}
]
}
}
Exemple :
{
"type": "IDCSProvider",
"status": "enabled",
"idAttribute": "preferred_username",
"capabilities": [
"login"
],
"authorizePhase": {
"loginScopes": "openid profile email",
"url": "https://idcs-idp-where-login-happen.identity.oraclecloud.com/oauth2/v1/authorize"
},
"authorizePhaseParameters": [
{
"value": "${socialIdentityProvider.consumerKey}",
"name": "client_id"
},
{
"value": "code",
"name": "response_type"
},
{
"value": "${scope}",
"name": "scope"
},
{
"value": "${state}",
"name": "state"
},
{
"value": "${redirectUri}",
"name": "redirect_uri"
}
],
"tokenPhase": {
"url": "https://idcs-idp-where-login-happen.identity.oraclecloud.com/oauth2/v1/token",
"method": "post"
},
"tokenPhaseHeaders": [
{
"value": "application/x-www-form-urlencoded",
"name": "Content-Type"
},
{
"value": "Basic ${clientCredentials}",
"name": "Authorization"
}
],
"tokenPhaseParameters": [
{
"value": "${authorizationCode}",
"name": "code"
},
{
"value": "authorization_code",
"name": "grant_type"
}
],
"userInfoPhase": {
"url": "https://idcs-idp-where-login-happen.identity.oraclecloud.com/oauth2/v1/userinfo",
"method": "get"
},
"userInfoPhaseHeaders": [
{
"value": "application/x-www-form-urlencoded",
"name": "Content-Type"
},
{
"value": "Bearer ${accessToken}",
"name": "Authorization"
}
],
"userInfoPhaseParameters": [
{
"name": "access_token",
"value": "${accessToken}"
}
],
"schemas": [
"urn:ietf:params:scim:schemas:oracle:idcs:SocialIdentityProviderMetadata"
]
}
Exemple Okta de fournisseur d'identités sociales personnalisé
{
"type": "OktaTest",
"status": "enabled",
"idAttribute": "email",
"capabilities": [
"login"
],
"authorizePhase": {
"loginScopes": "openid profile email",
"url": "<Okta's UserInfo endpoint>"
},
"authorizePhaseParameters": [
{
"name": "client_id",
"value": "${socialIdentityProvider.consumerKey}"
},
{
"name": "response_type",
"value": "code"
},
{
"name": "scope",
"value": "${scope}"
},
{
"name": "state",
"value": "${state}"
},
{
"name": "redirect_uri",
"value": "${redirectUri}"
}
],
"tokenPhase": {
"url": "<Okta's UserInfo endpoint>",
"method": "post"
},
"tokenPhaseHeaders": [
{
"value": "application/json",
"name": "Accept"
}
],
"tokenPhaseParameters": [
{
"value": "${socialIdentityProvider.consumerKey}",
"name": "client_id"
},
{
"value": "${socialIdentityProvider.consumerSecret}",
"name": "client_secret"
},
{
"value": "${redirectUri}",
"name": "redirect_uri"
},
{
"value": "${authorizationCode}",
"name": "code"
},
{
"value": "authorization_code",
"name": "grant_type"
}
],
"userInfoPhase": {
"url": "<Okta's UserInfo endpoint>",
"method": "post"
},
"userInfoPhaseHeaders": [
{
"value": "*/*",
"name": "Accept"
},
{
"value": "Bearer ${accessToken}",
"name": "Authorization"
}
],
"iconUrl": "<<iconURL>>",
"schemas": [
"urn:ietf:params:scim:schemas:oracle:idcs:SocialIdentityProviderMetadata"
]
}
Exemples de métadonnées personnalisées de fournisseur d'identités sociales (pour le cas d'utilisation de provisionnement)
{
"type": "SampleProviderForProvisioning",
"status": "enabled",
"capabilities": [
"provisioning"
],
"authorizePhase": {
"provisioningScopes": "<scope string>",
"url": "<Authorization endpoint>"
},
"authorizePhaseParameters": [
{
"value": "${socialIdentityProvider.consumerKey}",
"name": "client_id"
},
{
"value": "code",
"name": "response_type"
},
{
"value": "${scope}",
"name": "scope"
},
{
"value": "${state}",
"name": "state"
},
{
"value": "${redirectUri}",
"name": "redirect_uri"
}
],
"tokenPhase": {
"url": "<Token endpoint>",
"method": "<HTTP method for Token endpoint - get/post>"
},
"tokenPhaseHeaders": [
{
"value": "application/json",
"name": "Accept"
},
{
"value": "Basic ${clientCredentials}",
"name": "Authorization"
}
],
"tokenPhaseParameters": [
{
"value": "${socialIdentityProvider.consumerKey}",
"name": "client_id"
},
{
"value": "${socialIdentityProvider.consumerSecret}",
"name": "client_secret"
},
{
"value": "${redirectUri}",
"name": "redirect_uri"
},
{
"value": "${authorizationCode}",
"name": "code"
},
{
"value": "authorization_code",
"name": "grant_type"
}
],
"refreshTokenPhaseHeaders": [
{
"value": "application/json",
"name": "Accept"
}
],
"refreshTokenPhaseParameters": [
{
"value": "${socialIdentityProvider.consumerKey}",
"name": "client_id"
},
{
"value": "${socialIdentityProvider.consumerSecret}",
"name": "client_secret"
},
{
"value": "${refreshToken}",
"name": "refresh_token"
}