Mise à jour des expirations de jeton d'actualisation
Les jetons d'actualisation contiennent les informations nécessaires pour obtenir un nouveau jeton d'accès. En d'autres termes, chaque fois qu'un jeton d'accès est requis pour accéder à une ressource spécifique, un client peut utiliser un jeton d'actualisation pour obtenir un nouveau jeton d'accès émis par le serveur d'authentification.
Un cas d'emploi courant est l'obtention de nouveaux jetons d'accès après l'expiration des anciens, tels qu'un jeton d'accès arrivant à expiration sur une application mobile. L'application mobile envoie le jeton d'actualisation pour obtenir un nouveau jeton d'accès sans qu'il soit nécessaire de mettre en cache le mot de passe de l'utilisateur.
Les jetons d'actualisation expirent, mais sont généralement de longue durée.
La valeur par défaut de l'attribut
refreshTokenExpiry
est de sept jours. La valeur est indiquée en secondes : 604800.
Obtention de la valeur d'expiration du jeton d'actualisation en cours
Effectuez une demande GET vers l'adresse /Apps
, en demandant un ID d'application spécifique, puis indiquez l'attribut refreshTokenExpiry
.
Exemple de demande
GET <domainURL>/admin/v1/Apps/{{appID}}?attributes=refreshTokenExpiry
Exemple de réponse
L'attribut refreshTokenExpiry
est renvoyé dans la réponse (en gras dans l'exemple).
{
"isAliasApp": false,
"displayName": "ResourceOwner",
"refreshTokenExpiry": 604800,
"id": "{{appID}}",
"basedOnTemplate": {
"value": "CustomWebAppTemplateId"
}
}
Vous pouvez également effectuer une demande GET vers l'adresse /Apps
, en demandant à un ID d'application spécifique de renvoyer tous les attributs propres à l'application, y compris l'attribut refreshTokenExpiry
.
Exemple de demande
GET <domainURL>/admin/v1/Apps/{{appID}}
Exemple de réponse
L'attribut refreshTokenExpiry
est renvoyé dans la réponse (en gras dans l'exemple).
{
"accessTokenExpiry": 3600,
"clientType": "confidential",
"isAliasApp": false,
"audience": "<domainURL>",
"meta": {
"created": "2022-06-25T16:10:26.953Z",
"lastModified": "2022-06-25T20:37:14.039Z",
"resourceType": "App",
"location": "https://<domainURL>/admin/v1/Apps/9fc12da9eecd4927a9ef88512ce5612e"
},
"active": true,
"isLoginTarget": true,
"idcsCreatedBy": {
"display": "admin opc",
"type": "User",
"value": "855344f8015347e1a26c1ac9b2a2898e",
"$ref": "https://<domainURL>/admin/v1/Users/855344f8015347e1a26c1ac9b2a2898e"
},
"displayName": "ResourceOwner",
"showInMyApps": false,
"isMobileTarget": false,
"allowOffline": true,
"isUnmanagedApp": false,
"idcsLastModifiedBy": {
"display": "OAuthClient",
"type": "App",
"value": "66efab799b084c21bf84edcf1f587380",
"$ref": "https://<domainURL>/admin/v1/Apps/66efab799b084c21bf84edcf1f587380"
},
"isOPCService": false,
"refreshTokenExpiry": 604800,
"name": "3fd7476a48a94381bd5e1bc88cc92021",
"isOAuthClient": true,
"isManagedApp": false,
"isSamlServiceProvider": false,
"infrastructure": false,
"allUrlSchemesAllowed": true,
"trustScope": "Explicit",
"id": "9fc12da9eecd4927a9ef88512ce5612e",
"isWebTierPolicy": false,
"loginMechanism": "OIDC",
"allowAccessControl": false,
"isOAuthResource": true,
"migrated": false,
"isKerberosRealm": false,
"attrRenderingMetadata": [
{
"name": "aliasApps",
"visible": false
}
],
"basedOnTemplate": {
"lastModified": "2022-05-04T10:47:12Z",
"value": "CustomWebAppTemplateId",
"$ref": "https://<domainURL>/admin/v1/AppTemplates/CustomWebAppTemplateId"
},
"redirectUris": [
"http://localhost:8943"
],
"allowedGrants": [
"client_credentials",
"refresh_token",
"authorization_code"
],
"schemas": [
"urn:ietf:params:scim:schemas:oracle:idcs:App"
],
"clientSecret": "this-is-not-the-secret",
"grantedAppRoles": [
{
"value": "29722be952c14f9fac5237e5dd088660",
"$ref": "https://<domainURL>/admin/v1/AppRoles/29722be952c14f9fac5237e5dd088660",
"appId": "IDCSAppId",
"display": "identity domain administrator",
"type": "direct",
"appName": "IDCSApp",
"adminRole": true
},
{
"value": "6aa28be4b79143099e90e5dcdd820844",
"$ref": "https://<domainURL>/admin/v1/AppRoles/6aa28be4b79143099e90e5dcdd820844",
"appId": "IDCSAppId",
"display": "Me",
"type": "direct",
"appName": "IDCSApp",
"adminRole": true
},
{
"value": "99224c8907d84560b9621dcda9ecb8b4",
"$ref": "https://<domainURL>/admin/v1/AppRoles/99224c8907d84560b9621dcda9ecb8b4",
"appId": "IDCSAppId",
"display": "Cloud Gate",
"type": "direct",
"appName": "IDCSApp",
"adminRole": true
}
]
}
Modifier la valeur du jeton d'actualisation
Pour mettre à jour la valeur d'attribut refreshTokenExpiry
, effectuez une demande PATCH vers l'adresse /Apps
en indiquant l'ID d'application, puis définissez la valeur d'attribut refreshTokenExpiry
mise à jour dans la charge utile.
Exemple de demande
PATCH <domainURL>/admin/v1/Apps/{{appid}}
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
],
"Operations": [{
"op": "replace",
"path": "refreshTokenExpiry",
"value": 904800
}
]
}
Exemple de réponse
La réponse renvoyée inclut la valeur d'attribut refreshTokenExpiry
mise à jour (en gras dans l'exemple).
{
"accessTokenExpiry": 3600,
"clientType": "confidential",
"isAliasApp": false,
"audience": "https://<domainURL>",
"meta": {
"created": "2022-06-25T16:10:26.953Z",
"lastModified": "2022-06-25T20:37:14.039Z",
"resourceType": "App",
"location": "https://<domainURL>/admin/v1/Apps/9fc12da9eecd4927a9ef88512ce5612e"
},
"active": true,
"isLoginTarget": true,
"idcsCreatedBy": {
"display": "admin opc",
"type": "User",
"value": "855344f8015347e1a26c1ac9b2a2898e",
"$ref": "https://<domainURL>/admin/v1/Users/855344f8015347e1a26c1ac9b2a2898e"
},
"displayName": "ResourceOwner",
"showInMyApps": false,
"isMobileTarget": false,
"allowOffline": true,
"isUnmanagedApp": false,
"idcsLastModifiedBy": {
"display": "OAuthClient",
"type": "App",
"value": "66efab799b084c21bf84edcf1f587380",
"$ref": "https://<domainURL>/admin/v1/Apps/66efab799b084c21bf84edcf1f587380"
},
"isOPCService": false,
"refreshTokenExpiry": 904800,
"name": "3fd7476a48a94381bd5e1bc88cc92021",
"isOAuthClient": true,
"isManagedApp": false,
"isSamlServiceProvider": false,
"infrastructure": false,
"allUrlSchemesAllowed": true,
"trustScope": "Explicit",
"id": "9fc12da9eecd4927a9ef88512ce5612e",
"isWebTierPolicy": false,
"loginMechanism": "OIDC",
"allowAccessControl": false,
"isOAuthResource": true,
"migrated": false,
"isKerberosRealm": false,
"attrRenderingMetadata": [
{
"name": "aliasApps",
"visible": false
}
],
"basedOnTemplate": {
"lastModified": "2022-05-04T10:47:12Z",
"value": "CustomWebAppTemplateId",
"$ref": "https://<domainURL>/admin/v1/AppTemplates/CustomWebAppTemplateId"
},
"redirectUris": [
"http://localhost:8943"
],
"allowedGrants": [
"client_credentials",
"refresh_token",
"authorization_code"
],
"schemas": [
"urn:ietf:params:scim:schemas:oracle:idcs:App"
],
"clientSecret": "this-is-not-the-secret",
"grantedAppRoles": [
{
"value": "29722be952c14f9fac5237e5dd088660",
"$ref": "https://<domainURL>/admin/v1/AppRoles/29722be952c14f9fac5237e5dd088660",
"appId": "IDCSAppId",
"display": "identity domain administrator",
"type": "direct",
"appName": "IDCSApp",
"adminRole": true
},
{
"value": "6aa28be4b79143099e90e5dcdd820844",
"$ref": "https://<domainURL>/admin/v1/AppRoles/6aa28be4b79143099e90e5dcdd820844",
"appId": "IDCSAppId",
"display": "Me",
"type": "direct",
"appName": "IDCSApp",
"adminRole": true
},
{
"value": "99224c8907d84560b9621dcda9ecb8b4",
"$ref": "https://<domainURL>/admin/v1/AppRoles/99224c8907d84560b9621dcda9ecb8b4",
"appId": "IDCSAppId",
"display": "Cloud Gate",
"type": "direct",
"appName": "IDCSApp",
"adminRole": true
}
]
}