Passaggio di parametri personalizzati a un provider Social Identity

Utilizzare l'API REST dei domini di Identity per passare un parametro personalizzato per le configurazioni del provider Social Identity (IdP). Per ogni social IdP è possibile definire parametri personalizzati statici e dinamici, che vengono passati così com'è a IdP quando inviati in una richiesta di autorizzazione.

Definizione parametro personalizzato

È possibile definire i mapping dei parametri di relay utilizzando l'attributo social relayIdpParamMappings. Questo parametro memorizza le coppie chiave-valore di mapping per un social IdP. Un tipo di parametro dinamico viene mappato a un valore vuoto o nullo. Un tipo di parametro statico contiene un valore.
  • Se una chiave viene definita come parametro statico, ma viene passata con un valore diverso, in fase di esecuzione viene utilizzato il valore statico definito nella configurazione IdP.
  • Se nell'autorizzazione viene passata una variabile di parametro relay e l'URL non è definito nella configurazione IdP, questa variabile viene ignorata.
"relayIdpParamMappings": [
   {
    "relayParamKey": "brand",           //dynamic, since string value is empty
    "relayParamValue": ""
   },
   {
    "relayParamKey": "param1"           //dynamic, since value is null (not defined)
   },
   {
    "relayParamKey": "param2",          //static, since value is defined
    "relayParamValue": "value2"
   }

Esempio di mapping dei parametri di relè passati a un IdP

Questo URL di autorizzazione passato all'API REST dei domini di Identity:

https://<domainURL>/oauth2/v1/authorize?response_type=id_token&scope=openid&state=1234&nonce=123&client_id=<test_client>&redirect_uri=https://cloud.oracle.com& brand=abc&newParam=blah&param1=test&param2=newValue

Il reindirizzamento dal provider di identità diventa:

<IDPProvider Authorize URI>?client_id=....redirect_uri=....&brand=abc&param1=test&param2=value2.

La variabile newParam viene ignorata perché non è stata definita nella configurazione IdP originale. Il valore per param2 è statico e non viene modificato durante l'autorizzazione runtime. Il parametro dinamico brand ottiene un valore in runtime, poiché è stato definito inizialmente come tipo dinamico durante la configurazione IdP.

Creare un social IdP con il mapping dei parametri di relè

cURL: POST /admin/v1/SocialIdentityProviders

Corpo della richiesta di esempio

{
    "registrationEnabled": true,
    "showOnLogin": true,
    "description": "description",
    "serviceProviderName": "Facebook",
    "enabled": true,
    "accountLinkingEnabled": true,
    "name": "test provider custom param",
    "schemas": 
            [
                "urn:ietf:params:scim:schemas:oracle:idcs:SocialIdentityProvider"
            ],
    "consumerKey": "clientId12345",
    "consumerSecret": "clientSecret12345",
    "relayIdpParamMappings": [
     {
        "relayParamKey": "brand", 
        "relayParamValue": ""
    },
    {
        "relayParamKey": "param1" 
    },
    {
        "relayParamKey": "param2",  
        "relayParamValue": "value2"
    }
]
}

Corpo della risposta di esempio

{
    "idcsCreatedBy": {
        "type": "User",
        "display": "admin opc",
        "value": "<user-id>",
        "$ref": "https://<domainURL>/admin/v1/Users/<user-id>"
    },
    "id": "<identity-provider-id>",
    "meta": {
        "created": "2024-03-26T05:09:37.627Z",
        "lastModified": "2024-03-26T05:09:37.627Z",
        "version": "7f3acb03d59644ac956bc1b1a101f08b",
        "resourceType": "IdentityProvider",
        "location": "https://<domainURL>/admin/v1/IdentityProviders/<identity-provider-id>"
    },
    "urn:ietf:params:scim:schemas:oracle:idcs:extension:x509:IdentityProvider": {
        "crlEnabled": true
    },
    "enabled": true,
    "idcsLastModifiedBy": {
        "value": "<user-id>",
        "display": "admin opc",
        "type": "User",
        "$ref": "https://<domainURL>/admin/v1/Users/<user-id>"
    },
    "partnerName": "test provider custom param",
    "shownOnLoginPage": true,
    "description": "description",
    "ocid": "<domain-ocid>,
    "accountLinkingEnabled": true,
    "registrationEnabled": true,
    "serviceProviderName": "Facebook",
    "consumerSecret": "clientSecret12345",
    "idAttribute": "email",
    "consumerKey": "clientId12345",
    "relayIdpParamMappings": [
        {
            "relayParamKey": "brand"
        },
        {
            "relayParamKey": "param1"
        },
        {
            "relayParamKey": "param2",
            "relayParamValue": "value2"
        }
    ],
    "schemas": [
        "urn:ietf:params:scim:schemas:oracle:idcs:SocialIdentityProvider"
    ],
    "name": "test provider custom param",
    "showOnLogin": true
}

Aggiungere un mapping dei parametri di relè a un IdP esistente

cURL: PATCH /admin/v1/SocialIdentityProviders/{idpId}

Corpo della richiesta di esempio

{
  "schemas": [
    "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
    {
      "op": "add",
      "path": "relayIdpParamMappings",
      "value": [
        {
          "relayParamKey": "param3"
        },
        {
          "relayParamKey": "param4",
          "relayParamValue": "value4"
        }
      ]
    }
  ]
}

Corpo della risposta di esempio

{
    "idcsCreatedBy": {
        "type": "User",
        "display": "admin opc",
        "value": "<user-id>",
        "$ref": "https://<domainURL>/admin/v1/Users/<user-id>"
    },
    "id": "<identity-provider-id>",
    "meta": {
        "created": "2024-03-26T05:09:37.627Z",
        "lastModified": "2024-03-26T05:15:53.551Z",
        "version": "c5e3dd4485904bc98d73aedb1a994a6e",
        "resourceType": "IdentityProvider",
        "location": "https://<domainURL>/admin/v1/IdentityProviders/<identity-provider-id>"
    },
    "urn:ietf:params:scim:schemas:oracle:idcs:extension:x509:IdentityProvider": {
        "crlEnabled": true
    },
    "enabled": true,
    "idcsLastModifiedBy": {
        "value": "<user-id>",
        "display": "admin opc",
        "type": "User",
        "$ref": "https://<domainURL>/admin/v1/Users/<user-id>"
    },
    "partnerName": "test provider custom param",
    "shownOnLoginPage": true,
    "description": "description",
    "ocid": "<domain-ocid>,
    "accountLinkingEnabled": true,
    "registrationEnabled": true,
    "serviceProviderName": "Facebook",
    "consumerSecret": "clientSecret12345",
    "idAttribute": "email",
    "consumerKey": "clientId12345",
    "relayIdpParamMappings": [
        {
            "relayParamKey": "param3"
        },
        {
            "relayParamKey": "param4",
            "relayParamValue": "value4"
        },
        {
            "relayParamKey": "brand"
        },
        {
            "relayParamKey": "param1"
        },
        {
            "relayParamKey": "param2",
            "relayParamValue": "value2"
        }
    ],
    "schemas": [
        "urn:ietf:params:scim:schemas:oracle:idcs:SocialIdentityProvider"
    ],
    "name": "test provider custom param",
    "showOnLogin": true
}

Recupera mapping dei parametri di relè per un IdP esistente

cURL: GET /admin/v1/SocialIdentityProviders/{idpId}?attributes=relayIdpParamMappings

Corpo della richiesta di esempio: non applicabile.

Corpo della risposta di esempio

{
    "id": "<identity-provider-id>",
    "relayIdpParamMappings": [
        {
            "relayParamKey": "param3"
        },
        {
            "relayParamKey": "param4",
            "relayParamValue": "value4"
        },
        {
            "relayParamKey": "brand"
        },
        {
            "relayParamKey": "param1"
        },
        {
            "relayParamKey": "param2",
            "relayParamValue": "value2"
        }
    ],
    "name": "test provider custom param"
}

Aggiornare un mapping dei parametri di relè per un IdP

cURL: PATCH /admin/v1/SocialIdentityProviders/{idpId}

Corpo della richiesta di esempio

{
  "schemas": [
    "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
    {
      "op": "replace",
      "path": "relayIdpParamMappings[relayParamKey eq \"param2\"]",
      "value":[
        {
          "relayParamKey": "param2",
          "relayParamValue": "blah"
        }
      ]
    }
  ]
}

Corpo della risposta di esempio

{
    "idcsCreatedBy": {
        "type": "User",
        "display": "admin opc",
        "value": "<user-id>",
        "$ref": "https://<domainURL>/admin/v1/Users/<user-id>"
    },
    "id": "<identity-provider-id>",
    "meta": {
        "created": "2024-03-26T05:09:37.627Z",
        "lastModified": "2024-03-26T05:17:16.894Z",
        "version": "cff0f9903fcf47fb9e079477565cc7fa",
        "resourceType": "IdentityProvider",
        "location": "https://<domainURL>/admin/v1/IdentityProviders/<identity-provider-id>"
    },
    "urn:ietf:params:scim:schemas:oracle:idcs:extension:x509:IdentityProvider": {
        "crlEnabled": true
    },
    "enabled": true,
    "idcsLastModifiedBy": {
        "value": "<user-id>",
        "display": "admin opc",
        "type": "User",
        "$ref": "https://<domainURL>/admin/v1/Users/<user-id>"
    },
    "partnerName": "test provider custom param",
    "shownOnLoginPage": true,
    "description": "description",
    "ocid": "<domain-ocid>,
    "accountLinkingEnabled": true,
    "registrationEnabled": true,
    "serviceProviderName": "Facebook",
    "consumerSecret": "clientSecret12345",
    "idAttribute": "email",
    "consumerKey": "clientId12345",
    "relayIdpParamMappings": [
        {
            "relayParamKey": "param3"
        },
        {
            "relayParamKey": "param4",
            "relayParamValue": "value4"
        },
        {
            "relayParamKey": "brand"
        },
        {
            "relayParamKey": "param1"
        },
        {
            "relayParamKey": "param2",
            "relayParamValue": "blah"
        }
    ],
    "schemas": [
        "urn:ietf:params:scim:schemas:oracle:idcs:SocialIdentityProvider"
    ],
    "name": "test provider custom param",
    "showOnLogin": true
}

Eliminare un mapping dei parametri di relè da un IdP

cURL: PATCH /admin/v1/SocialIdentityProviders/{idpId}

Corpo della richiesta di esempio

{
  "schemas": [
    "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
    {
      "op": "remove",
      "path": "relayIdpParamMappings[relayParamKey eq \"param1\"]"
    }
  ]
}

Corpo della risposta di esempio

{
    "idcsCreatedBy": {
        "type": "User",
        "display": "admin opc",
        "value": "<user-id>",
        "$ref": "https://<domainURL>/admin/v1/Users/<user-id>"
    },
    "id": "<identity-provider-id>",
    "meta": {
        "created": "2024-03-26T05:09:37.627Z",
        "lastModified": "2024-03-26T05:18:02.914Z",
        "version": "87dd609f85ee4a51905bc7d5071c487d",
        "resourceType": "IdentityProvider",
        "location": "https://<domainURL>/admin/v1/IdentityProviders/<identity-provider-id>"
    },
    "urn:ietf:params:scim:schemas:oracle:idcs:extension:x509:IdentityProvider": {
        "crlEnabled": true
    },
    "enabled": true,
    "idcsLastModifiedBy": {
        "value": "<user-id>",
        "display": "admin opc",
        "type": "User",
        "$ref": "https://<domainURL>/admin/v1/Users/<user-id>"
    },
    "partnerName": "test provider custom param",
    "shownOnLoginPage": true,
    "description": "description",
    "ocid": "<domain-ocid>,
    "accountLinkingEnabled": true,
    "registrationEnabled": true,
    "serviceProviderName": "Facebook",
    "consumerSecret": "clientSecret12345",
    "idAttribute": "email",
    "consumerKey": "clientId12345",
    "relayIdpParamMappings": [
        {
            "relayParamKey": "param3"
        },
        {
            "relayParamKey": "param4",
            "relayParamValue": "value4"
        },
        {
            "relayParamKey": "brand"
        },
        {
            "relayParamKey": "param2",
            "relayParamValue": "blah"
        }
    ],
    "schemas": [
        "urn:ietf:params:scim:schemas:oracle:idcs:SocialIdentityProvider"
    ],
    "name": "test provider custom param",
    "showOnLogin": true
}

Elimina tutti i mapping dei parametri di relè da un IdP

cURL: PATCH /admin/v1/SocialIdentityProviders/{idpId}

Corpo della richiesta di esempio


  "schemas": [
    "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
    {
      "op": "remove",
      "path": "relayIdpParamMappings"
    }
  ]
}

Corpo della risposta di esempio

{
    "idcsCreatedBy": {
        "type": "User",
        "display": "admin opc",
        "value": "<user-id>",
        "$ref": "https://<domainURL>/admin/v1/Users/<user-id>"
    },
    "id": "<identity-provider-id>",
    "meta": {
        "created": "2024-03-26T05:09:37.627Z",
        "lastModified": "2024-03-26T05:18:39.488Z",
        "version": "b02a6f8463904f4f8567edf59cf1efd5",
        "resourceType": "IdentityProvider",
        "location": "https://<domainURL>/admin/v1/IdentityProviders/<identity-provider-id>"
    },
    "urn:ietf:params:scim:schemas:oracle:idcs:extension:x509:IdentityProvider": {
        "crlEnabled": true
    },
    "enabled": true,
    "idcsLastModifiedBy": {
        "value": "<user-id>",
        "display": "admin opc",
        "type": "User",
        "$ref": "https://<domainURL>/admin/v1/Users/<user-id>"
    },
    "partnerName": "test provider custom param",
    "shownOnLoginPage": true,
    "description": "description",
    "ocid": "<domain-ocid>,
    "accountLinkingEnabled": true,
    "registrationEnabled": true,
    "serviceProviderName": "Facebook",
    "consumerSecret": "clientSecret12345",
    "idAttribute": "email",
    "consumerKey": "clientId12345",
    "schemas": [
        "urn:ietf:params:scim:schemas:oracle:idcs:SocialIdentityProvider"
    ],
    "name": "test provider custom param",
    "showOnLogin": true
}