diff --git a/docs/data-sources/client.md b/docs/data-sources/client.md index 65308fa37..d5014b8a6 100644 --- a/docs/data-sources/client.md +++ b/docs/data-sources/client.md @@ -74,6 +74,8 @@ data "auth0_client" "some-client-by-id" { Read-Only: - `aws` (List of Object) (see [below for nested schema](#nestedobjatt--addons--aws)) +- `azure_blob` (List of Object) (see [below for nested schema](#nestedobjatt--addons--azure_blob)) +- `azure_sb` (List of Object) (see [below for nested schema](#nestedobjatt--addons--azure_sb)) ### Nested Schema for `addons.aws` @@ -85,6 +87,38 @@ Read-Only: - `role` (String) + +### Nested Schema for `addons.azure_blob` + +Read-Only: + +- `account_name` (String) +- `blob_delete` (Boolean) +- `blob_name` (String) +- `blob_read` (Boolean) +- `blob_write` (Boolean) +- `container_delete` (Boolean) +- `container_list` (Boolean) +- `container_name` (String) +- `container_read` (Boolean) +- `container_write` (Boolean) +- `expiration` (Number) +- `signed_identifier` (String) +- `storage_access_key` (String) + + + +### Nested Schema for `addons.azure_sb` + +Read-Only: + +- `entity_path` (String) +- `expiration` (Number) +- `namespace` (String) +- `sas_key` (String) +- `sas_key_name` (String) + + ### Nested Schema for `jwt_configuration` diff --git a/docs/data-sources/global_client.md b/docs/data-sources/global_client.md index 3b5dbabf3..128f39eee 100644 --- a/docs/data-sources/global_client.md +++ b/docs/data-sources/global_client.md @@ -63,6 +63,8 @@ data "auth0_global_client" "global" {} Read-Only: - `aws` (List of Object) (see [below for nested schema](#nestedobjatt--addons--aws)) +- `azure_blob` (List of Object) (see [below for nested schema](#nestedobjatt--addons--azure_blob)) +- `azure_sb` (List of Object) (see [below for nested schema](#nestedobjatt--addons--azure_sb)) ### Nested Schema for `addons.aws` @@ -74,6 +76,38 @@ Read-Only: - `role` (String) + +### Nested Schema for `addons.azure_blob` + +Read-Only: + +- `account_name` (String) +- `blob_delete` (Boolean) +- `blob_name` (String) +- `blob_read` (Boolean) +- `blob_write` (Boolean) +- `container_delete` (Boolean) +- `container_list` (Boolean) +- `container_name` (String) +- `container_read` (Boolean) +- `container_write` (Boolean) +- `expiration` (Number) +- `signed_identifier` (String) +- `storage_access_key` (String) + + + +### Nested Schema for `addons.azure_sb` + +Read-Only: + +- `entity_path` (String) +- `expiration` (Number) +- `namespace` (String) +- `sas_key` (String) +- `sas_key_name` (String) + + ### Nested Schema for `jwt_configuration` diff --git a/docs/resources/client.md b/docs/resources/client.md index 2220937b2..a8e40f0ad 100644 --- a/docs/resources/client.md +++ b/docs/resources/client.md @@ -136,6 +136,8 @@ resource "auth0_client" "my_client" { Optional: - `aws` (Block List, Max: 1) AWS Addon configuration. (see [below for nested schema](#nestedblock--addons--aws)) +- `azure_blob` (Block List, Max: 1) Azure Blob Storage Addon configuration. (see [below for nested schema](#nestedblock--addons--azure_blob)) +- `azure_sb` (Block List, Max: 1) Azure Storage Bus Addon configuration. (see [below for nested schema](#nestedblock--addons--azure_sb)) ### Nested Schema for `addons.aws` @@ -147,6 +149,38 @@ Optional: - `role` (String) AWS role ARN, for example `arn:aws:iam::010616021751:role/foo`. + +### Nested Schema for `addons.azure_blob` + +Optional: + +- `account_name` (String) Your Azure storage account name. Usually first segment in your Azure storage URL, for example `https://acme-org.blob.core.windows.net` would be the account name `acme-org`. +- `blob_delete` (Boolean) Indicates if the issued token has permission to delete the blob. +- `blob_name` (String) Entity to request a token for, such as `my-blob`. If blank the computed SAS will apply to the entire storage container. +- `blob_read` (Boolean) Indicates if the issued token has permission to read the content, properties, metadata and block list. Use the blob as the source of a copy operation. +- `blob_write` (Boolean) Indicates if the issued token has permission to create or write content, properties, metadata, or block list. Snapshot or lease the blob. Resize the blob (page blob only). Use the blob as the destination of a copy operation within the same account. +- `container_delete` (Boolean) Indicates if issued token has permission to delete any blob in the container. +- `container_list` (Boolean) Indicates if the issued token has permission to list blobs in the container. +- `container_name` (String) Container to request a token for, such as `my-container`. +- `container_read` (Boolean) Indicates if the issued token has permission to read the content, properties, metadata or block list of any blob in the container. Use any blob in the container as the source of a copy operation. +- `container_write` (Boolean) Indicates that for any blob in the container if the issued token has permission to create or write content, properties, metadata, or block list. Snapshot or lease the blob. Resize the blob (page blob only). Use the blob as the destination of a copy operation within the same account. +- `expiration` (Number) Expiration in minutes for the generated token (default of 5 minutes). +- `signed_identifier` (String) Shared access policy identifier defined in your storage account resource. +- `storage_access_key` (String, Sensitive) Access key associated with this storage account. + + + +### Nested Schema for `addons.azure_sb` + +Optional: + +- `entity_path` (String) Entity you want to request a token for, such as `my-queue`. +- `expiration` (Number) Optional expiration in minutes for the generated token. Defaults to 5 minutes. +- `namespace` (String) Your Azure Service Bus namespace. Usually the first segment of your Service Bus URL (for example `https://acme-org.servicebus.windows.net` would be `acme-org`). +- `sas_key` (String, Sensitive) Primary Key associated with your shared access policy. +- `sas_key_name` (String) Your shared access policy name defined in your Service Bus entity. + + ### Nested Schema for `jwt_configuration` diff --git a/docs/resources/global_client.md b/docs/resources/global_client.md index 78b4c9e1b..1910b2b8e 100644 --- a/docs/resources/global_client.md +++ b/docs/resources/global_client.md @@ -79,6 +79,8 @@ PAGE Optional: - `aws` (Block List, Max: 1) AWS Addon configuration. (see [below for nested schema](#nestedblock--addons--aws)) +- `azure_blob` (Block List, Max: 1) Azure Blob Storage Addon configuration. (see [below for nested schema](#nestedblock--addons--azure_blob)) +- `azure_sb` (Block List, Max: 1) Azure Storage Bus Addon configuration. (see [below for nested schema](#nestedblock--addons--azure_sb)) ### Nested Schema for `addons.aws` @@ -90,6 +92,38 @@ Optional: - `role` (String) AWS role ARN, for example `arn:aws:iam::010616021751:role/foo`. + +### Nested Schema for `addons.azure_blob` + +Optional: + +- `account_name` (String) Your Azure storage account name. Usually first segment in your Azure storage URL, for example `https://acme-org.blob.core.windows.net` would be the account name `acme-org`. +- `blob_delete` (Boolean) Indicates if the issued token has permission to delete the blob. +- `blob_name` (String) Entity to request a token for, such as `my-blob`. If blank the computed SAS will apply to the entire storage container. +- `blob_read` (Boolean) Indicates if the issued token has permission to read the content, properties, metadata and block list. Use the blob as the source of a copy operation. +- `blob_write` (Boolean) Indicates if the issued token has permission to create or write content, properties, metadata, or block list. Snapshot or lease the blob. Resize the blob (page blob only). Use the blob as the destination of a copy operation within the same account. +- `container_delete` (Boolean) Indicates if issued token has permission to delete any blob in the container. +- `container_list` (Boolean) Indicates if the issued token has permission to list blobs in the container. +- `container_name` (String) Container to request a token for, such as `my-container`. +- `container_read` (Boolean) Indicates if the issued token has permission to read the content, properties, metadata or block list of any blob in the container. Use any blob in the container as the source of a copy operation. +- `container_write` (Boolean) Indicates that for any blob in the container if the issued token has permission to create or write content, properties, metadata, or block list. Snapshot or lease the blob. Resize the blob (page blob only). Use the blob as the destination of a copy operation within the same account. +- `expiration` (Number) Expiration in minutes for the generated token (default of 5 minutes). +- `signed_identifier` (String) Shared access policy identifier defined in your storage account resource. +- `storage_access_key` (String, Sensitive) Access key associated with this storage account. + + + +### Nested Schema for `addons.azure_sb` + +Optional: + +- `entity_path` (String) Entity you want to request a token for, such as `my-queue`. +- `expiration` (Number) Optional expiration in minutes for the generated token. Defaults to 5 minutes. +- `namespace` (String) Your Azure Service Bus namespace. Usually the first segment of your Service Bus URL (for example `https://acme-org.servicebus.windows.net` would be `acme-org`). +- `sas_key` (String, Sensitive) Primary Key associated with your shared access policy. +- `sas_key_name` (String) Your shared access policy name defined in your Service Bus entity. + + ### Nested Schema for `jwt_configuration` diff --git a/internal/auth0/client/expand.go b/internal/auth0/client/expand.go index 3556a7898..d6ff705e9 100644 --- a/internal/auth0/client/expand.go +++ b/internal/auth0/client/expand.go @@ -245,7 +245,7 @@ func expandClientAddons(d *schema.ResourceData) *management.ClientAddons { d.GetRawConfig().GetAttr("addons").ForEachElement(func(_ cty.Value, addonsCfg cty.Value) (stop bool) { addons.AWS = expandClientAddonAWS(addonsCfg.GetAttr("aws")) - + addons.AzureBlob = expandClientAddonAzureBlob(addonsCfg.GetAttr("azure_blob")) return stop }) @@ -260,20 +260,44 @@ func expandClientAddonAWS(awsCfg cty.Value) *management.AWSClientAddon { var awsAddon management.AWSClientAddon awsCfg.ForEachElement(func(_ cty.Value, awsCfg cty.Value) (stop bool) { - awsAddon.Principal = value.String(awsCfg.GetAttr("principal")) - awsAddon.Role = value.String(awsCfg.GetAttr("role")) - awsAddon.LifetimeInSeconds = value.Int(awsCfg.GetAttr("lifetime_in_seconds")) + awsAddon = management.AWSClientAddon{ + Principal: value.String(awsCfg.GetAttr("principal")), + Role: value.String(awsCfg.GetAttr("role")), + LifetimeInSeconds: value.Int(awsCfg.GetAttr("lifetime_in_seconds")), + } return stop }) - if awsAddon == (management.AWSClientAddon{}) { - return nil - } - return &awsAddon } +func expandClientAddonAzureBlob(azureCfg cty.Value) *management.AzureBlobClientAddon { + var azureAddon management.AzureBlobClientAddon + + azureCfg.ForEachElement(func(_ cty.Value, azureCfg cty.Value) (stop bool) { + azureAddon = management.AzureBlobClientAddon{ + AccountName: value.String(azureCfg.GetAttr("account_name")), + StorageAccessKey: value.String(azureCfg.GetAttr("storage_access_key")), + ContainerName: value.String(azureCfg.GetAttr("container_name")), + BlobName: value.String(azureCfg.GetAttr("blob_name")), + Expiration: value.Int(azureCfg.GetAttr("expiration")), + SignedIdentifier: value.String(azureCfg.GetAttr("signed_identifier")), + BlobRead: value.Bool(azureCfg.GetAttr("blob_read")), + BlobWrite: value.Bool(azureCfg.GetAttr("blob_write")), + BlobDelete: value.Bool(azureCfg.GetAttr("blob_delete")), + ContainerRead: value.Bool(azureCfg.GetAttr("container_read")), + ContainerWrite: value.Bool(azureCfg.GetAttr("container_write")), + ContainerDelete: value.Bool(azureCfg.GetAttr("container_delete")), + ContainerList: value.Bool(azureCfg.GetAttr("container_list")), + } + + return stop + }) + + return &azureAddon +} + func clientHasChange(c *management.Client) bool { return c.String() != "{}" } diff --git a/internal/auth0/client/flatten.go b/internal/auth0/client/flatten.go index b5a1d2ff9..a904fb4ec 100644 --- a/internal/auth0/client/flatten.go +++ b/internal/auth0/client/flatten.go @@ -95,7 +95,8 @@ func flattenClientAddons(addons *management.ClientAddons) []interface{} { } m := map[string]interface{}{ - "aws": nil, + "aws": nil, + "azure_blob": nil, } if addons.GetAWS() != nil { @@ -108,5 +109,25 @@ func flattenClientAddons(addons *management.ClientAddons) []interface{} { } } + if addons.GetAzureBlob() != nil { + m["azure_blob"] = []interface{}{ + map[string]interface{}{ + "account_name": addons.GetAzureBlob().GetAccountName(), + "storage_access_key": addons.GetAzureBlob().GetStorageAccessKey(), + "container_name": addons.GetAzureBlob().GetContainerName(), + "blob_name": addons.GetAzureBlob().GetBlobName(), + "expiration": addons.GetAzureBlob().GetExpiration(), + "signed_identifier": addons.GetAzureBlob().GetSignedIdentifier(), + "blob_read": addons.GetAzureBlob().GetBlobRead(), + "blob_write": addons.GetAzureBlob().GetBlobWrite(), + "blob_delete": addons.GetAzureBlob().GetBlobDelete(), + "container_read": addons.GetAzureBlob().GetContainerRead(), + "container_write": addons.GetAzureBlob().GetContainerWrite(), + "container_delete": addons.GetAzureBlob().GetContainerDelete(), + "container_list": addons.GetAzureBlob().GetContainerList(), + }, + } + } + return []interface{}{m} } diff --git a/internal/auth0/client/resource.go b/internal/auth0/client/resource.go index b5309912c..04f1c8a2f 100644 --- a/internal/auth0/client/resource.go +++ b/internal/auth0/client/resource.go @@ -515,6 +515,99 @@ func NewResource() *schema.Resource { }, }, }, + "azure_blob": { + Type: schema.TypeList, + Optional: true, + Computed: true, + MaxItems: 1, + Description: "Azure Blob Storage Addon configuration.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "account_name": { + Description: "Your Azure storage account name. Usually first segment in your " + + "Azure storage URL, for example `https://acme-org.blob.core.windows.net` would " + + "be the account name `acme-org`.", + Type: schema.TypeString, + Optional: true, + }, + "storage_access_key": { + Description: "Access key associated with this storage account.", + Type: schema.TypeString, + Optional: true, + Sensitive: true, + }, + "container_name": { + Description: "Container to request a token for, such as `my-container`.", + Type: schema.TypeString, + Optional: true, + }, + "blob_name": { + Description: "Entity to request a token for, such as `my-blob`. If blank the " + + "computed SAS will apply to the entire storage container.", + Type: schema.TypeString, + Optional: true, + }, + "expiration": { + Description: "Expiration in minutes for the generated token (default of 5 minutes).", + Type: schema.TypeInt, + ValidateFunc: validation.IntAtLeast(0), + Optional: true, + }, + "signed_identifier": { + Description: "Shared access policy identifier defined in your storage account resource.", + Type: schema.TypeString, + Optional: true, + }, + "blob_read": { + Description: "Indicates if the issued token has permission to read the " + + "content, properties, metadata and block list. Use the blob as the " + + "source of a copy operation.", + Type: schema.TypeBool, + Optional: true, + }, + "blob_write": { + Description: "Indicates if the issued token has permission to create or " + + "write content, properties, metadata, or block list. Snapshot or lease " + + "the blob. Resize the blob (page blob only). Use the blob as the " + + "destination of a copy operation within the same account.", + Type: schema.TypeBool, + Optional: true, + }, + "blob_delete": { + Description: "Indicates if the issued token has permission to delete the blob.", + Type: schema.TypeBool, + Optional: true, + }, + "container_read": { + Description: "Indicates if the issued token has permission to read the " + + "content, properties, metadata or block list of any blob in the " + + "container. Use any blob in the container as the source of a copy operation.", + Type: schema.TypeBool, + Optional: true, + }, + "container_write": { + Description: "Indicates that for any blob in the container if the issued " + + "token has permission to create or write content, properties, metadata, " + + "or block list. Snapshot or lease the blob. Resize the blob " + + "(page blob only). Use the blob as the destination of a copy operation " + + "within the same account.", + Type: schema.TypeBool, + Optional: true, + }, + "container_delete": { + Description: "Indicates if issued token has permission to delete any blob in " + + "the container.", + Type: schema.TypeBool, + Optional: true, + }, + "container_list": { + Description: "Indicates if the issued token has permission to list blobs in the container.", + Type: schema.TypeBool, + Optional: true, + }, + }, + }, + }, }, }, }, diff --git a/internal/auth0/client/resource_test.go b/internal/auth0/client/resource_test.go index c9812c5cf..60cf9df1e 100644 --- a/internal/auth0/client/resource_test.go +++ b/internal/auth0/client/resource_test.go @@ -753,6 +753,31 @@ resource "auth0_client" "my_client" { } ` +const testAccUpdateClientWithAddonsAzureBlob = ` +resource "auth0_client" "my_client" { + name = "Acceptance Test - SSO Integration - {{.testName}}" + app_type = "sso_integration" + + addons { + azure_blob { + account_name = "acmeorg" + storage_access_key = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa==" + container_name = "my-container" + blob_name = "my-blob" + expiration = 10 + signed_identifier = "id123" + blob_read = true + blob_write = true + blob_delete = true + container_read = true + container_write = true + container_delete = true + container_list = true + } + } +} +` + func TestAccClientAddons(t *testing.T) { acctest.Test(t, resource.TestCase{ Steps: []resource.TestStep{ @@ -767,6 +792,27 @@ func TestAccClientAddons(t *testing.T) { resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.aws.0.lifetime_in_seconds", "32000"), ), }, + { + Config: acctest.ParseTestName(testAccUpdateClientWithAddonsAzureBlob, t.Name()), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("auth0_client.my_client", "name", fmt.Sprintf("Acceptance Test - SSO Integration - %s", t.Name())), + resource.TestCheckResourceAttr("auth0_client.my_client", "app_type", "sso_integration"), + resource.TestCheckResourceAttr("auth0_client.my_client", "addons.#", "1"), + resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.account_name", "acmeorg"), + resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.storage_access_key", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa=="), + resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.container_name", "my-container"), + resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.blob_name", "my-blob"), + resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.expiration", "10"), + resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.signed_identifier", "id123"), + resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.blob_read", "true"), + resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.blob_write", "true"), + resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.blob_delete", "true"), + resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.container_read", "true"), + resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.container_write", "true"), + resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.container_delete", "true"), + resource.TestCheckResourceAttr("auth0_client.my_client", "addons.0.azure_blob.0.container_list", "true"), + ), + }, }, }) } diff --git a/test/data/recordings/TestAccClientAddons.yaml b/test/data/recordings/TestAccClientAddons.yaml index 59726611b..5f8152425 100644 --- a/test/data/recordings/TestAccClientAddons.yaml +++ b/test/data/recordings/TestAccClientAddons.yaml @@ -6,14 +6,14 @@ interactions: proto: HTTP/1.1 proto_major: 1 proto_minor: 1 - content_length: 249 + content_length: 265 transfer_encoding: [] trailer: {} host: terraform-provider-auth0-dev.eu.auth0.com remote_addr: "" request_uri: "" body: | - {"name":"Acceptance Test - SSO Integration - TestAccClientAddons","app_type":"sso_integration","addons":{"aws":{"principal":"arn:aws:iam::010616021751:saml-provider/idpname","role":"arn:aws:iam::010616021751:role/foo","lifetime_in_seconds":32000}}} + {"name":"Acceptance Test - SSO Integration - TestAccClientAddons","app_type":"sso_integration","addons":{"aws":{"principal":"arn:aws:iam::010616021751:saml-provider/idpname","role":"arn:aws:iam::010616021751:role/foo","lifetime_in_seconds":32000},"azure_blob":{}}} form: {} headers: Content-Type: @@ -30,13 +30,13 @@ interactions: trailer: {} content_length: -1 uncompressed: false - body: '{"name":"Acceptance Test - SSO Integration - TestAccClientAddons","client_id":"T8mmXrIWvY8fOozSWa6jsyDAcilJ05ia","client_secret":"[REDACTED]","app_type":"sso_integration","is_first_party":true,"is_token_endpoint_ip_header_trusted":false,"oidc_conformant":false,"jwt_configuration":{"secret_encoded":false,"lifetime_in_seconds":36000},"signing_keys":[{"cert":"[REDACTED]"}],"sso_disabled":false,"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"custom_login_page_on":true,"addons":{"aws":{"principal":"arn:aws:iam::010616021751:saml-provider/idpname","role":"arn:aws:iam::010616021751:role/foo","lifetime_in_seconds":32000}},"refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' + body: '{"name":"Acceptance Test - SSO Integration - TestAccClientAddons","client_id":"YhVNlfyDHTdVvrgVdo51pZEQHxuG0pPR","client_secret":"[REDACTED]","app_type":"sso_integration","is_first_party":true,"is_token_endpoint_ip_header_trusted":false,"oidc_conformant":false,"jwt_configuration":{"secret_encoded":false,"lifetime_in_seconds":36000},"signing_keys":[{"cert":"[REDACTED]"}],"sso_disabled":false,"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"custom_login_page_on":true,"addons":{"aws":{"principal":"arn:aws:iam::010616021751:saml-provider/idpname","role":"arn:aws:iam::010616021751:role/foo","lifetime_in_seconds":32000},"azure_blob":{}},"refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' headers: Content-Type: - application/json; charset=utf-8 status: 201 Created code: 201 - duration: 926.172ms + duration: 290.815792ms - id: 1 request: proto: HTTP/1.1 @@ -56,7 +56,7 @@ interactions: - application/json User-Agent: - Go-Auth0-SDK/latest - url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/T8mmXrIWvY8fOozSWa6jsyDAcilJ05ia + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/YhVNlfyDHTdVvrgVdo51pZEQHxuG0pPR method: GET response: proto: HTTP/2.0 @@ -66,13 +66,13 @@ interactions: trailer: {} content_length: -1 uncompressed: true - body: '{"name":"Acceptance Test - SSO Integration - TestAccClientAddons","client_id":"T8mmXrIWvY8fOozSWa6jsyDAcilJ05ia","client_secret":"[REDACTED]","app_type":"sso_integration","is_first_party":true,"is_token_endpoint_ip_header_trusted":false,"oidc_conformant":false,"jwt_configuration":{"secret_encoded":false,"lifetime_in_seconds":36000},"signing_keys":[{"cert":"[REDACTED]"}],"sso_disabled":false,"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"custom_login_page_on":true,"addons":{"aws":{"principal":"arn:aws:iam::010616021751:saml-provider/idpname","role":"arn:aws:iam::010616021751:role/foo","lifetime_in_seconds":32000}},"refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' + body: '{"name":"Acceptance Test - SSO Integration - TestAccClientAddons","client_id":"YhVNlfyDHTdVvrgVdo51pZEQHxuG0pPR","client_secret":"[REDACTED]","app_type":"sso_integration","is_first_party":true,"is_token_endpoint_ip_header_trusted":false,"oidc_conformant":false,"jwt_configuration":{"secret_encoded":false,"lifetime_in_seconds":36000},"signing_keys":[{"cert":"[REDACTED]"}],"sso_disabled":false,"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"custom_login_page_on":true,"addons":{"aws":{"principal":"arn:aws:iam::010616021751:saml-provider/idpname","role":"arn:aws:iam::010616021751:role/foo","lifetime_in_seconds":32000},"azure_blob":{}},"refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' headers: Content-Type: - application/json; charset=utf-8 status: 200 OK code: 200 - duration: 112.954083ms + duration: 107.347875ms - id: 2 request: proto: HTTP/1.1 @@ -92,7 +92,7 @@ interactions: - application/json User-Agent: - Go-Auth0-SDK/latest - url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/T8mmXrIWvY8fOozSWa6jsyDAcilJ05ia + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/YhVNlfyDHTdVvrgVdo51pZEQHxuG0pPR method: GET response: proto: HTTP/2.0 @@ -102,14 +102,158 @@ interactions: trailer: {} content_length: -1 uncompressed: true - body: '{"name":"Acceptance Test - SSO Integration - TestAccClientAddons","client_id":"T8mmXrIWvY8fOozSWa6jsyDAcilJ05ia","client_secret":"[REDACTED]","app_type":"sso_integration","is_first_party":true,"is_token_endpoint_ip_header_trusted":false,"oidc_conformant":false,"jwt_configuration":{"secret_encoded":false,"lifetime_in_seconds":36000},"signing_keys":[{"cert":"[REDACTED]"}],"sso_disabled":false,"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"custom_login_page_on":true,"addons":{"aws":{"principal":"arn:aws:iam::010616021751:saml-provider/idpname","role":"arn:aws:iam::010616021751:role/foo","lifetime_in_seconds":32000}},"refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' + body: '{"name":"Acceptance Test - SSO Integration - TestAccClientAddons","client_id":"YhVNlfyDHTdVvrgVdo51pZEQHxuG0pPR","client_secret":"[REDACTED]","app_type":"sso_integration","is_first_party":true,"is_token_endpoint_ip_header_trusted":false,"oidc_conformant":false,"jwt_configuration":{"secret_encoded":false,"lifetime_in_seconds":36000},"signing_keys":[{"cert":"[REDACTED]"}],"sso_disabled":false,"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"custom_login_page_on":true,"addons":{"aws":{"principal":"arn:aws:iam::010616021751:saml-provider/idpname","role":"arn:aws:iam::010616021751:role/foo","lifetime_in_seconds":32000},"azure_blob":{}},"refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' headers: Content-Type: - application/json; charset=utf-8 status: 200 OK code: 200 - duration: 118.992834ms + duration: 120.849ms - id: 3 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/latest + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/YhVNlfyDHTdVvrgVdo51pZEQHxuG0pPR + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"name":"Acceptance Test - SSO Integration - TestAccClientAddons","client_id":"YhVNlfyDHTdVvrgVdo51pZEQHxuG0pPR","client_secret":"[REDACTED]","app_type":"sso_integration","is_first_party":true,"is_token_endpoint_ip_header_trusted":false,"oidc_conformant":false,"jwt_configuration":{"secret_encoded":false,"lifetime_in_seconds":36000},"signing_keys":[{"cert":"[REDACTED]"}],"sso_disabled":false,"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"custom_login_page_on":true,"addons":{"aws":{"principal":"arn:aws:iam::010616021751:saml-provider/idpname","role":"arn:aws:iam::010616021751:role/foo","lifetime_in_seconds":32000},"azure_blob":{}},"refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 136.643834ms + - id: 4 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 505 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + {"name":"Acceptance Test - SSO Integration - TestAccClientAddons","app_type":"sso_integration","addons":{"aws":{},"azure_blob":{"accountName":"acmeorg","storageAccessKey":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa==","containerName":"my-container","blobName":"my-blob","expiration":10,"signedIdentifier":"id123","blob_read":true,"blob_write":true,"blob_delete":true,"container_read":true,"container_write":true,"container_delete":true,"container_list":true}}} + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/latest + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/YhVNlfyDHTdVvrgVdo51pZEQHxuG0pPR + method: PATCH + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"name":"Acceptance Test - SSO Integration - TestAccClientAddons","client_id":"YhVNlfyDHTdVvrgVdo51pZEQHxuG0pPR","client_secret":"[REDACTED]","app_type":"sso_integration","is_first_party":true,"is_token_endpoint_ip_header_trusted":false,"oidc_conformant":false,"jwt_configuration":{"secret_encoded":false,"lifetime_in_seconds":36000},"signing_keys":[{"cert":"[REDACTED]"}],"sso_disabled":false,"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"custom_login_page_on":true,"addons":{"aws":{},"azure_blob":{"accountName":"acmeorg","storageAccessKey":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa==","containerName":"my-container","blobName":"my-blob","expiration":10,"signedIdentifier":"id123","blob_read":true,"blob_write":true,"blob_delete":true,"container_read":true,"container_write":true,"container_delete":true,"container_list":true}},"refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 141.231458ms + - id: 5 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/latest + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/YhVNlfyDHTdVvrgVdo51pZEQHxuG0pPR + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"name":"Acceptance Test - SSO Integration - TestAccClientAddons","client_id":"YhVNlfyDHTdVvrgVdo51pZEQHxuG0pPR","client_secret":"[REDACTED]","app_type":"sso_integration","is_first_party":true,"is_token_endpoint_ip_header_trusted":false,"oidc_conformant":false,"jwt_configuration":{"secret_encoded":false,"lifetime_in_seconds":36000},"signing_keys":[{"cert":"[REDACTED]"}],"sso_disabled":false,"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"custom_login_page_on":true,"addons":{"aws":{},"azure_blob":{"accountName":"acmeorg","storageAccessKey":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa==","containerName":"my-container","blobName":"my-blob","expiration":10,"signedIdentifier":"id123","blob_read":true,"blob_write":true,"blob_delete":true,"container_read":true,"container_write":true,"container_delete":true,"container_list":true}},"refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 105.842917ms + - id: 6 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 5 + transfer_encoding: [] + trailer: {} + host: terraform-provider-auth0-dev.eu.auth0.com + remote_addr: "" + request_uri: "" + body: | + null + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - Go-Auth0-SDK/latest + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/YhVNlfyDHTdVvrgVdo51pZEQHxuG0pPR + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: true + body: '{"name":"Acceptance Test - SSO Integration - TestAccClientAddons","client_id":"YhVNlfyDHTdVvrgVdo51pZEQHxuG0pPR","client_secret":"[REDACTED]","app_type":"sso_integration","is_first_party":true,"is_token_endpoint_ip_header_trusted":false,"oidc_conformant":false,"jwt_configuration":{"secret_encoded":false,"lifetime_in_seconds":36000},"signing_keys":[{"cert":"[REDACTED]"}],"sso_disabled":false,"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"custom_login_page_on":true,"addons":{"aws":{},"azure_blob":{"accountName":"acmeorg","storageAccessKey":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa==","containerName":"my-container","blobName":"my-blob","expiration":10,"signedIdentifier":"id123","blob_read":true,"blob_write":true,"blob_delete":true,"container_read":true,"container_write":true,"container_delete":true,"container_list":true}},"refresh_token":{"rotation_type":"non-rotating","expiration_type":"non-expiring","leeway":0,"token_lifetime":2592000,"infinite_token_lifetime":true,"infinite_idle_token_lifetime":true,"idle_token_lifetime":1296000}}' + headers: + Content-Type: + - application/json; charset=utf-8 + status: 200 OK + code: 200 + duration: 124.97375ms + - id: 7 request: proto: HTTP/1.1 proto_major: 1 @@ -127,7 +271,7 @@ interactions: - application/json User-Agent: - Go-Auth0-SDK/latest - url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/T8mmXrIWvY8fOozSWa6jsyDAcilJ05ia + url: https://terraform-provider-auth0-dev.eu.auth0.com/api/v2/clients/YhVNlfyDHTdVvrgVdo51pZEQHxuG0pPR method: DELETE response: proto: HTTP/2.0 @@ -143,4 +287,4 @@ interactions: - application/json; charset=utf-8 status: 204 No Content code: 204 - duration: 211.839791ms + duration: 198.342916ms