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 social personnalisé (IdP).
Vous pouvez configurer les métadonnées d'un fournisseur d'identités social personnalisé à l'aide des exemples ci-dessous.
/admin/v1/SocialIdentityProviderMetadata
.- pour ajouter un fournisseur de niveau global, appelez l'adresse
<domainURL>/admin/v1/SocialIdentityProviderMetadata
. - Pour ajouter un fournisseur de niveau locataire, appelez l'adresse
<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ées défini au niveau du locataire est prioritaire.- En le choisissant dans la console. Choisissez Sécurité, Fournisseurs d'identités, Ajouter un réseau social IdP et choisissez le nouveau fournisseur d'identités.
- A partir de l'API REST
/admin/v1/SocialIdentityProviders
.
Le nouveau fournisseur d'identités sociales personnalisé est disponible en tant que l'un des types de fournisseur d'identités sociales.
Cas d'utilisation de connexion de fournisseur d'identités sociales personnalisé
Ces cas d'utilisation de connexion montrent comment modifier les paramètres AuthorizePhase
, loginScopes
, tokenPhase
et userInfoPhase
en fonction du fournisseur.
Dans ces exemples, les expressions (en 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 au réseau social IdP.${redirectUri}
est l'URL de callback 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 la connexion, chaîne de portée spécifiée en tant que valeur de l'attribut
loginScopes
. Dans le cas d'utilisation du provisionnement, chaîne de portée indiquée en tant que valeur de l'attribut
provisioningScopes
.
- Dans le cas d'utilisation de la connexion, chaîne de portée spécifiée en tant que valeur de l'attribut
${clientCredentials}
est la représentation standard encodée en base 64 de l'ID client et de la clé secrète client, comme requis dans l'en-tête d'autorisation du modèle d'authentification de base.${authorizationCode}
fait référence au code d'autorisation reçu avec un rappel du réseau social IdP.
Dans les sections suivantes, il existe des exemples de métadonnées pour le cas d'utilisation de la connexion, suivis de deux exemples. Ensuite, les exemples de métadonnées pour le cas d'utilisation du provisionnement.
Métadonnées d'exemple de connexion de 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és (avec correspondance de nom utilisateur)
Définissez l'adresse électronique comme facultative dans les domaines d'identité à l'aide d'une opération de patch 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 du fournisseur d'identités sociales personnalisé (pour le cas d'utilisation du 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"
}