Configure um modelo para o tipo de concessão do Portador OAuth JWT
Este modelo de configuração de exemplo define registros de Credencial e conexão usando o tipo de concessão de Portador JWT para autenticar solicitações para Docusign.
Modelo de dados padrão
Cada item de nível superior no modelo de dados padrão cria um registro associado. O modelo inclui estas seções:
Credencial: cria um registro na tabela Credenciais.Conexão: cria um registro na tabela Conexões [sys_connection] e qualquer registro de conexão associado.Adicional: cria opcionalmente registros em uma tabela personalizada. O script de pós-processamento informa ao sistema o que fazer com esses registros.
O exemplo a seguir cria os registros necessários para autenticação do tipo de concessão do Portador OAuth JWT.
{
"credential": {
"oauth_entity": {
"oauth_entity_profile": [
{
"grant_type": "urn:ietf:params:oauth:grant-type:jwt-bearer",
"name": "Docusign Profile",
"default": true,
"oauth_entity_profile_scope": [
"users:read.email"
]
}
],
"code_challenge_method": "S256",
"type": "consumer",
"oauth_entity_scope": [
{
"oauth_entity_scope": "users:read.email",
"name": "email"
}
],
"client_id": "<provider-client-id>",
"use_mutual_auth": false,
"revoke_token_url": "https://<provider-domain-name>.com/oauth2/revoke",
"default_grant_type": "urn:ietf:params:oauth:grant-type:jwt-bearer",
"public_client": false,
"oauth_api_script": "3e3a3a11c333210016194ffe5bba8f70",
"name": "Docusign Spoke OAuth",
"client_secret": "<provider-client-secret>",
"auth_url": "https://<provider-domain-name>.com/oauth2/auth",
"token_url": "https://<provider-domain-name>.com/oauth2/token",
"redirect_url": "https://<instance-name>.service-now.com/oauth_redirect.do"
},
"jwt_provider": {
"jwt_keystore_aliases": {
"kid": "<provider-key-id>",
"name": "Docusign Spoke JWT Key",
"signing_keystore": "<signing-keystore-sys-id>",
"signing_algorithm": "rsa_256",
"signing_key_password": "password"
},
"jwt_claim_validation" : [ {
"name" : "iss",
"is_standard" : true,
"data_type" : "string",
"value":"<docusign-iss-claim>"
}, {
"name" : "sub",
"is_standard" : true,
"data_type" : "string",
"value":"<docusign-sub-claim>"
}, {
"name" : "aud",
"is_standard" : true,
"data_type" : "string",
"value":"<docusign-aud-claim>"
}, {
"name" : "scope",
"is_standard" : false,
"data_type" : "string",
"value" : "signature impersonation"
} ],
"name": "Docusign Spoke JWT Provider",
"jwt_api_script": "9ef6af86ff10330001d3cd6bd53bf144"
},
"name": "Docusign Spoke Credential",
"table": "oauth_2_0_credentials"
},
"connection": {
"use_mid": false,
"connection_url": "https://<provider-domain-name>.com",
"name": "Docusign Spoke Connection",
"table": "http_connection"
},
"additional":{
"docusign_account_name": "<docusign-account-name>",
"docusign_account_email": "<docusign-account-email>"
}
}Esquema de dados dinâmicos
O esquema de dados dinâmicos define o que o usuário vê quando cria um alias de Conexão e credencial e coleta sua entrada. Use a sintaxe de referência com pontos para mapear a entrada do usuário para campos criados no modelo de dados padrão. Por exemplo, o connection_fields mapeia a entrada de usuário para o campo connection_url no objeto connection criado pelo modelo de dados padrão.
{
"connection_fields": [
{
"name": "connection.connection_url",
"label": "Connection URL",
"type": "text",
"defaultValue": "https://demo.docusign.net",
"hint": "Connection URL for Docusign"
}],
"additional_fields":[
{
"name": "additional.docusign_account_id",
"label": "Docusign Account Number",
"type": "text",
"hint": "Docusign Account Number"
},
{
"name": "additional.docusign_account_name",
"label": "Docusign Account Name",
"type": "text",
"hint": "Name to identify the Docusign account"
},
{
"name": "additional.docusign_account_email",
"label": "Docusign Account Email",
"type": "text",
"hint": "Docusign Account Email"
}
],
"credential_fields": [
{
"name": "credential.oauth_entity.client_id",
"label": "OAuth Client ID",
"type": "text",
"hint": "Client ID for Docusign"
},
{
"name": "credential.oauth_entity.redirect_url",
"label": "OAuth Redirect URL",
"type": "text",
"defaultValue": "https://<instance-name>.service-now.com/oauth_redirect.do",
"hint": "Callback URL for Docusign"
},
{
"name": "credential.jwt_provider.jwt_claim_validation[0].value",
"label": "Issuer (iss) Claim value",
"type": "text",
"hint": "The integrator key (also known as client ID) of the application"
},
{
"name": "credential.jwt_provider.jwt_claim_validation[1].value",
"label": "Subject (sub) Claim value",
"type": "text",
"hint": "The user ID of the user to be impersonated"
},
{
"name": "credential.jwt_provider.jwt_claim_validation[2].value",
"label": "Audience (aud) Claim value",
"type": "text",
"defaultValue": "account-d.docusign.com",
"hint": "The URI of the authentication service instance to be used e.g. account.docusign.com"
},
{
"name": "credential.jwt_provider.jwt_keystore_aliases.kid",
"label": "Key ID (kid)",
"type": "text",
"hint": "Indicates which key was used to secure the JWS"
},
{
"name": "credential.jwt_provider.jwt_keystore_aliases.signing_keystore",
"label": "Key Store",
"type": "file"
}
]
}Script de pós-processamento
O script de pós-processamento a seguir mapeia a entrada do usuário para campos na tabela sn_docusign_spoke_accounts.
(function execute(aliasId, connectionSysId, jsonDefaultData, jsonDynamicData) {
var jsonDynamicDataP = JSON.parse(jsonDynamicData);
var accountGR = new GlideRecord("sn_docusign_spoke_accounts");
accountGR.setValue("account_name", jsonDynamicDataP["additional.docusign_account_name"]);
accountGR.setValue("alias", aliasId);
accountGR.setValue("email", jsonDynamicDataP["additional.docusign_account_email"]);
accountGR.setValue("id", jsonDynamicDataP["additional.docusign_account_id"]);
accountGR.insert();
})(aliasId, connectionSysId, jsonDefaultData, jsonDynamicData);Formulário resultante de configuração de conexão e credencial Docusign
Quando o usuário navegar até o Alias de conexão e credencial Docusign associado e selecionar Criar nova conexão e credencial, aparecerá o seguinte diálogo.