@pulumi/keycloak 5.3.0 → 5.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributeImporterIdentityProviderMapper.d.ts +45 -63
- package/attributeImporterIdentityProviderMapper.js +24 -33
- package/attributeImporterIdentityProviderMapper.js.map +1 -1
- package/attributeToRoleIdentityMapper.d.ts +14 -6
- package/attributeToRoleIdentityMapper.js +14 -6
- package/attributeToRoleIdentityMapper.js.map +1 -1
- package/authentication/bindings.d.ts +3 -3
- package/authentication/bindings.js +3 -3
- package/authentication/execution.d.ts +8 -4
- package/authentication/execution.js +8 -4
- package/authentication/execution.js.map +1 -1
- package/authentication/executionConfig.d.ts +10 -2
- package/authentication/executionConfig.js +10 -2
- package/authentication/executionConfig.js.map +1 -1
- package/authentication/flow.d.ts +14 -2
- package/authentication/flow.js +14 -2
- package/authentication/flow.js.map +1 -1
- package/authentication/subflow.d.ts +16 -2
- package/authentication/subflow.js +16 -2
- package/authentication/subflow.js.map +1 -1
- package/customIdentityProviderMapping.d.ts +12 -5
- package/customIdentityProviderMapping.js +12 -5
- package/customIdentityProviderMapping.js.map +1 -1
- package/customUserFederation.d.ts +48 -48
- package/customUserFederation.js +24 -12
- package/customUserFederation.js.map +1 -1
- package/defaultGroups.d.ts +19 -26
- package/defaultGroups.js +19 -8
- package/defaultGroups.js.map +1 -1
- package/defaultRoles.d.ts +12 -3
- package/defaultRoles.js +12 -3
- package/defaultRoles.js.map +1 -1
- package/genericClientProtocolMapper.d.ts +36 -34
- package/genericClientProtocolMapper.js +21 -10
- package/genericClientProtocolMapper.js.map +1 -1
- package/genericClientRoleMapper.d.ts +42 -15
- package/genericClientRoleMapper.js +42 -15
- package/genericClientRoleMapper.js.map +1 -1
- package/genericProtocolMapper.d.ts +9 -4
- package/genericProtocolMapper.js +9 -4
- package/genericProtocolMapper.js.map +1 -1
- package/genericRoleMapper.d.ts +42 -15
- package/genericRoleMapper.js +42 -15
- package/genericRoleMapper.js.map +1 -1
- package/getClientDescriptionConverter.d.ts +50 -50
- package/getClientDescriptionConverter.js +50 -50
- package/getGroup.d.ts +4 -62
- package/getGroup.js +4 -50
- package/getGroup.js.map +1 -1
- package/getRealm.d.ts +36 -10
- package/getRealm.js +36 -4
- package/getRealm.js.map +1 -1
- package/getRealmKeys.d.ts +8 -28
- package/getRealmKeys.js +8 -4
- package/getRealmKeys.js.map +1 -1
- package/getRole.d.ts +4 -65
- package/getRole.js +4 -44
- package/getRole.js.map +1 -1
- package/getUser.d.ts +2 -0
- package/getUser.js +2 -0
- package/getUser.js.map +1 -1
- package/getUserRealmRoles.d.ts +4 -0
- package/getUserRealmRoles.js +4 -0
- package/getUserRealmRoles.js.map +1 -1
- package/group.d.ts +37 -57
- package/group.js +37 -15
- package/group.js.map +1 -1
- package/groupMemberships.d.ts +28 -43
- package/groupMemberships.js +28 -16
- package/groupMemberships.js.map +1 -1
- package/groupPermissions.d.ts +13 -0
- package/groupPermissions.js +13 -0
- package/groupPermissions.js.map +1 -1
- package/groupRoles.d.ts +35 -90
- package/groupRoles.js +35 -54
- package/groupRoles.js.map +1 -1
- package/hardcodedAttributeIdentityProviderMapper.d.ts +4 -3
- package/hardcodedAttributeIdentityProviderMapper.js +4 -3
- package/hardcodedAttributeIdentityProviderMapper.js.map +1 -1
- package/hardcodedRoleIdentityMapper.d.ts +6 -4
- package/hardcodedRoleIdentityMapper.js +6 -4
- package/hardcodedRoleIdentityMapper.js.map +1 -1
- package/identityProviderTokenExchangeScopePermission.d.ts +13 -6
- package/identityProviderTokenExchangeScopePermission.js +13 -6
- package/identityProviderTokenExchangeScopePermission.js.map +1 -1
- package/ldap/customMapper.d.ts +14 -6
- package/ldap/customMapper.js +14 -6
- package/ldap/customMapper.js.map +1 -1
- package/ldap/fullNameMapper.d.ts +35 -48
- package/ldap/fullNameMapper.js +26 -12
- package/ldap/fullNameMapper.js.map +1 -1
- package/ldap/groupMapper.d.ts +47 -156
- package/ldap/groupMapper.js +38 -12
- package/ldap/groupMapper.js.map +1 -1
- package/ldap/hardcodedAttributeMapper.d.ts +12 -4
- package/ldap/hardcodedAttributeMapper.js +12 -4
- package/ldap/hardcodedAttributeMapper.js.map +1 -1
- package/ldap/hardcodedGroupMapper.d.ts +16 -5
- package/ldap/hardcodedGroupMapper.js +16 -5
- package/ldap/hardcodedGroupMapper.js.map +1 -1
- package/ldap/hardcodedRoleMapper.d.ts +31 -66
- package/ldap/hardcodedRoleMapper.js +19 -54
- package/ldap/hardcodedRoleMapper.js.map +1 -1
- package/ldap/msadLdsUserAccountControlMapper.d.ts +12 -4
- package/ldap/msadLdsUserAccountControlMapper.js +12 -4
- package/ldap/msadLdsUserAccountControlMapper.js.map +1 -1
- package/ldap/msadUserAccountControlMapper.d.ts +29 -27
- package/ldap/msadUserAccountControlMapper.js +20 -9
- package/ldap/msadUserAccountControlMapper.js.map +1 -1
- package/ldap/roleMapper.d.ts +12 -4
- package/ldap/roleMapper.js +12 -4
- package/ldap/roleMapper.js.map +1 -1
- package/ldap/userAttributeMapper.d.ts +54 -39
- package/ldap/userAttributeMapper.js +24 -9
- package/ldap/userAttributeMapper.js.map +1 -1
- package/ldap/userFederation.d.ts +117 -88
- package/ldap/userFederation.js +45 -13
- package/ldap/userFederation.js.map +1 -1
- package/oidc/googleIdentityProvider.d.ts +8 -4
- package/oidc/googleIdentityProvider.js +8 -4
- package/oidc/googleIdentityProvider.js.map +1 -1
- package/oidc/identityProvider.d.ts +7 -3
- package/oidc/identityProvider.js +7 -3
- package/oidc/identityProvider.js.map +1 -1
- package/openid/audienceProtocolMapper.d.ts +62 -43
- package/openid/audienceProtocolMapper.js +38 -19
- package/openid/audienceProtocolMapper.js.map +1 -1
- package/openid/audienceResolveProtocolMapper.d.ts +22 -7
- package/openid/audienceResolveProtocolMapper.js +22 -7
- package/openid/audienceResolveProtocolMapper.js.map +1 -1
- package/openid/audienceResolveProtocolMappter.d.ts +22 -7
- package/openid/audienceResolveProtocolMappter.js +22 -7
- package/openid/audienceResolveProtocolMappter.js.map +1 -1
- package/openid/client.d.ts +45 -429
- package/openid/client.js +45 -12
- package/openid/client.js.map +1 -1
- package/openid/clientAuthorizationPermission.d.ts +6 -2
- package/openid/clientAuthorizationPermission.js +6 -2
- package/openid/clientAuthorizationPermission.js.map +1 -1
- package/openid/clientDefaultScopes.d.ts +16 -31
- package/openid/clientDefaultScopes.js +16 -4
- package/openid/clientDefaultScopes.js.map +1 -1
- package/openid/clientOptionalScopes.d.ts +16 -32
- package/openid/clientOptionalScopes.js +16 -5
- package/openid/clientOptionalScopes.js.map +1 -1
- package/openid/clientPolicy.d.ts +5 -3
- package/openid/clientPolicy.js +5 -3
- package/openid/clientPolicy.js.map +1 -1
- package/openid/clientScope.d.ts +25 -66
- package/openid/clientScope.js +25 -12
- package/openid/clientScope.js.map +1 -1
- package/openid/clientServiceAccountRealmRole.d.ts +12 -4
- package/openid/clientServiceAccountRealmRole.js +12 -4
- package/openid/clientServiceAccountRealmRole.js.map +1 -1
- package/openid/clientServiceAccountRole.d.ts +14 -5
- package/openid/clientServiceAccountRole.js +14 -5
- package/openid/clientServiceAccountRole.js.map +1 -1
- package/openid/fullNameProtocolMapper.d.ts +49 -59
- package/openid/fullNameProtocolMapper.js +37 -20
- package/openid/fullNameProtocolMapper.js.map +1 -1
- package/openid/getClient.d.ts +30 -14
- package/openid/getClient.js +30 -2
- package/openid/getClient.js.map +1 -1
- package/openid/getClientAuthorizationPolicy.d.ts +8 -2
- package/openid/getClientAuthorizationPolicy.js +8 -2
- package/openid/getClientAuthorizationPolicy.js.map +1 -1
- package/openid/getClientScope.d.ts +4 -2
- package/openid/getClientScope.js +4 -2
- package/openid/getClientScope.js.map +1 -1
- package/openid/getClientServiceAccountUser.d.ts +4 -2
- package/openid/getClientServiceAccountUser.js +4 -2
- package/openid/getClientServiceAccountUser.js.map +1 -1
- package/openid/groupMembershipProtocolMapper.d.ts +51 -77
- package/openid/groupMembershipProtocolMapper.js +39 -20
- package/openid/groupMembershipProtocolMapper.js.map +1 -1
- package/openid/hardcodedClaimProtocolMapper.d.ts +64 -62
- package/openid/hardcodedClaimProtocolMapper.js +40 -20
- package/openid/hardcodedClaimProtocolMapper.js.map +1 -1
- package/openid/hardcodedRoleProtocolMapper.d.ts +56 -43
- package/openid/hardcodedRoleProtocolMapper.js +44 -22
- package/openid/hardcodedRoleProtocolMapper.js.map +1 -1
- package/openid/scriptProtocolMapper.d.ts +23 -7
- package/openid/scriptProtocolMapper.js +23 -7
- package/openid/scriptProtocolMapper.js.map +1 -1
- package/openid/userAttributeProtocolMapper.d.ts +71 -68
- package/openid/userAttributeProtocolMapper.js +41 -20
- package/openid/userAttributeProtocolMapper.js.map +1 -1
- package/openid/userClientRoleProtocolMapper.d.ts +23 -7
- package/openid/userClientRoleProtocolMapper.js +23 -7
- package/openid/userClientRoleProtocolMapper.js.map +1 -1
- package/openid/userPropertyProtocolMapper.d.ts +64 -63
- package/openid/userPropertyProtocolMapper.js +40 -21
- package/openid/userPropertyProtocolMapper.js.map +1 -1
- package/openid/userRealmRoleProtocolMapper.d.ts +71 -59
- package/openid/userRealmRoleProtocolMapper.js +41 -20
- package/openid/userRealmRoleProtocolMapper.js.map +1 -1
- package/openid/userSessionNoteProtocolMapper.d.ts +23 -7
- package/openid/userSessionNoteProtocolMapper.js +23 -7
- package/openid/userSessionNoteProtocolMapper.js.map +1 -1
- package/package.json +1 -1
- package/realm.d.ts +30 -509
- package/realm.js +0 -83
- package/realm.js.map +1 -1
- package/realmEvents.d.ts +15 -71
- package/realmEvents.js +15 -8
- package/realmEvents.js.map +1 -1
- package/realmKeystoreAesGenerated.d.ts +8 -3
- package/realmKeystoreAesGenerated.js +8 -3
- package/realmKeystoreAesGenerated.js.map +1 -1
- package/realmKeystoreEcdsaGenerated.d.ts +8 -3
- package/realmKeystoreEcdsaGenerated.js +8 -3
- package/realmKeystoreEcdsaGenerated.js.map +1 -1
- package/realmKeystoreHmacGenerated.d.ts +8 -3
- package/realmKeystoreHmacGenerated.js +8 -3
- package/realmKeystoreHmacGenerated.js.map +1 -1
- package/realmKeystoreJavaGenerated.d.ts +8 -3
- package/realmKeystoreJavaGenerated.js +8 -3
- package/realmKeystoreJavaGenerated.js.map +1 -1
- package/realmKeystoreRsa.d.ts +6 -2
- package/realmKeystoreRsa.js +6 -2
- package/realmKeystoreRsa.js.map +1 -1
- package/realmKeystoreRsaGenerated.d.ts +8 -3
- package/realmKeystoreRsaGenerated.js +8 -3
- package/realmKeystoreRsaGenerated.js.map +1 -1
- package/realmUserProfile.d.ts +1 -1
- package/realmUserProfile.js +1 -1
- package/requiredAction.d.ts +8 -3
- package/requiredAction.js +8 -3
- package/requiredAction.js.map +1 -1
- package/role.d.ts +57 -110
- package/role.js +57 -56
- package/role.js.map +1 -1
- package/saml/client.d.ts +9 -344
- package/saml/client.js +9 -29
- package/saml/client.js.map +1 -1
- package/saml/clientDefaultScope.d.ts +0 -33
- package/saml/clientDefaultScope.js +0 -33
- package/saml/clientDefaultScope.js.map +1 -1
- package/saml/clientScope.d.ts +10 -3
- package/saml/clientScope.js +10 -3
- package/saml/clientScope.js.map +1 -1
- package/saml/getClient.d.ts +2 -0
- package/saml/getClient.js +2 -0
- package/saml/getClient.js.map +1 -1
- package/saml/getClientInstallationProvider.d.ts +0 -62
- package/saml/getClientInstallationProvider.js +0 -62
- package/saml/getClientInstallationProvider.js.map +1 -1
- package/saml/identityProvider.d.ts +155 -111
- package/saml/identityProvider.js +44 -15
- package/saml/identityProvider.js.map +1 -1
- package/saml/scriptProtocolMapper.d.ts +15 -5
- package/saml/scriptProtocolMapper.js +15 -5
- package/saml/scriptProtocolMapper.js.map +1 -1
- package/saml/userAttributeProtocolMapper.d.ts +32 -91
- package/saml/userAttributeProtocolMapper.js +32 -19
- package/saml/userAttributeProtocolMapper.js.map +1 -1
- package/saml/userPropertyProtocolMapper.d.ts +32 -91
- package/saml/userPropertyProtocolMapper.js +32 -19
- package/saml/userPropertyProtocolMapper.js.map +1 -1
- package/types/input.d.ts +74 -231
- package/types/output.d.ts +44 -255
- package/user.d.ts +26 -104
- package/user.js +26 -14
- package/user.js.map +1 -1
- package/userGroups.d.ts +5 -33
- package/userGroups.js +5 -33
- package/userGroups.js.map +1 -1
- package/userRoles.d.ts +16 -6
- package/userRoles.js +16 -6
- package/userRoles.js.map +1 -1
- package/userTemplateImporterIdentityProviderMapper.d.ts +10 -3
- package/userTemplateImporterIdentityProviderMapper.js +10 -3
- package/userTemplateImporterIdentityProviderMapper.js.map +1 -1
- package/usersPermissions.d.ts +10 -25
- package/usersPermissions.js +10 -25
- package/usersPermissions.js.map +1 -1
|
@@ -1,51 +1,42 @@
|
|
|
1
1
|
import * as pulumi from "@pulumi/pulumi";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* ## # keycloak.AttributeImporterIdentityProviderMapper
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* - For the OIDC identity provider, this will map a claim on the ID or access token to an attribute for the imported Keycloak user.
|
|
7
|
-
* - For the SAML identity provider, this will map a SAML attribute found within the assertion to an attribute for the imported Keycloak user.
|
|
8
|
-
* - For social identity providers, this will map a JSON field from the user profile to an attribute for the imported Keycloak user.
|
|
5
|
+
* Allows to create and manage identity provider mappers within Keycloak.
|
|
9
6
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* ## Example Usage
|
|
7
|
+
* ### Example Usage
|
|
13
8
|
*
|
|
14
9
|
* ```typescript
|
|
15
10
|
* import * as pulumi from "@pulumi/pulumi";
|
|
16
11
|
* import * as keycloak from "@pulumi/keycloak";
|
|
17
12
|
*
|
|
18
|
-
* const
|
|
13
|
+
* const testMapper = new keycloak.AttributeImporterIdentityProviderMapper("test_mapper", {
|
|
19
14
|
* realm: "my-realm",
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* alias: "oidc",
|
|
25
|
-
* authorizationUrl: "https://example.com/auth",
|
|
26
|
-
* tokenUrl: "https://example.com/token",
|
|
27
|
-
* clientId: "example_id",
|
|
28
|
-
* clientSecret: "example_token",
|
|
29
|
-
* defaultScopes: "openid random profile",
|
|
30
|
-
* });
|
|
31
|
-
* const oidcAttributeImporterIdentityProviderMapper = new keycloak.AttributeImporterIdentityProviderMapper("oidcAttributeImporterIdentityProviderMapper", {
|
|
32
|
-
* realm: realm.id,
|
|
33
|
-
* claimName: "my-email-claim",
|
|
34
|
-
* identityProviderAlias: oidcIdentityProvider.alias,
|
|
35
|
-
* userAttribute: "email",
|
|
36
|
-
* extraConfig: {
|
|
37
|
-
* syncMode: "INHERIT",
|
|
38
|
-
* },
|
|
15
|
+
* name: "my-mapper",
|
|
16
|
+
* identityProviderAlias: "idp_alias",
|
|
17
|
+
* attributeName: "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname",
|
|
18
|
+
* userAttribute: "lastName",
|
|
39
19
|
* });
|
|
40
20
|
* ```
|
|
41
21
|
*
|
|
42
|
-
*
|
|
22
|
+
* ### Argument Reference
|
|
43
23
|
*
|
|
44
|
-
*
|
|
24
|
+
* The following arguments are supported:
|
|
45
25
|
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
26
|
+
* - `realm` - (Required) The name of the realm.
|
|
27
|
+
* - `name` - (Required) The name of the mapper.
|
|
28
|
+
* - `identityProviderAlias` - (Required) The alias of the associated identity provider.
|
|
29
|
+
* - `userAttribute` - (Required) The user attribute name to store SAML attribute.
|
|
30
|
+
* - `attributeName` - (Optional) The Name of attribute to search for in assertion. You can leave this blank and specify a friendly name instead.
|
|
31
|
+
* - `attributeFriendlyName` - (Optional) The friendly name of attribute to search for in assertion. You can leave this blank and specify an attribute name instead.
|
|
32
|
+
* - `claimName` - (Optional) The claim name.
|
|
33
|
+
*
|
|
34
|
+
* ### Import
|
|
35
|
+
*
|
|
36
|
+
* Identity provider mapper can be imported using the format `{{realm_id}}/{{idp_alias}}/{{idp_mapper_id}}`, where `idpAlias` is the identity provider alias, and `idpMapperId` is the unique ID that Keycloak
|
|
37
|
+
* assigns to the mapper upon creation. This value can be found in the URI when editing this mapper in the GUI, and is typically a GUID.
|
|
38
|
+
*
|
|
39
|
+
* Example:
|
|
49
40
|
*/
|
|
50
41
|
export declare class AttributeImporterIdentityProviderMapper extends pulumi.CustomResource {
|
|
51
42
|
/**
|
|
@@ -64,37 +55,34 @@ export declare class AttributeImporterIdentityProviderMapper extends pulumi.Cust
|
|
|
64
55
|
*/
|
|
65
56
|
static isInstance(obj: any): obj is AttributeImporterIdentityProviderMapper;
|
|
66
57
|
/**
|
|
67
|
-
*
|
|
58
|
+
* Attribute Friendly Name
|
|
68
59
|
*/
|
|
69
60
|
readonly attributeFriendlyName: pulumi.Output<string | undefined>;
|
|
70
61
|
/**
|
|
71
|
-
*
|
|
62
|
+
* Attribute Name
|
|
72
63
|
*/
|
|
73
64
|
readonly attributeName: pulumi.Output<string | undefined>;
|
|
74
65
|
/**
|
|
75
|
-
*
|
|
66
|
+
* Claim Name
|
|
76
67
|
*/
|
|
77
68
|
readonly claimName: pulumi.Output<string | undefined>;
|
|
78
|
-
/**
|
|
79
|
-
* Key/value attributes to add to the identity provider mapper model that is persisted to Keycloak. This can be used to extend the base model with new Keycloak features.
|
|
80
|
-
*/
|
|
81
69
|
readonly extraConfig: pulumi.Output<{
|
|
82
70
|
[key: string]: any;
|
|
83
71
|
} | undefined>;
|
|
84
72
|
/**
|
|
85
|
-
*
|
|
73
|
+
* IDP Alias
|
|
86
74
|
*/
|
|
87
75
|
readonly identityProviderAlias: pulumi.Output<string>;
|
|
88
76
|
/**
|
|
89
|
-
*
|
|
77
|
+
* IDP Mapper Name
|
|
90
78
|
*/
|
|
91
79
|
readonly name: pulumi.Output<string>;
|
|
92
80
|
/**
|
|
93
|
-
*
|
|
81
|
+
* Realm Name
|
|
94
82
|
*/
|
|
95
83
|
readonly realm: pulumi.Output<string>;
|
|
96
84
|
/**
|
|
97
|
-
*
|
|
85
|
+
* User Attribute
|
|
98
86
|
*/
|
|
99
87
|
readonly userAttribute: pulumi.Output<string>;
|
|
100
88
|
/**
|
|
@@ -111,37 +99,34 @@ export declare class AttributeImporterIdentityProviderMapper extends pulumi.Cust
|
|
|
111
99
|
*/
|
|
112
100
|
export interface AttributeImporterIdentityProviderMapperState {
|
|
113
101
|
/**
|
|
114
|
-
*
|
|
102
|
+
* Attribute Friendly Name
|
|
115
103
|
*/
|
|
116
104
|
attributeFriendlyName?: pulumi.Input<string>;
|
|
117
105
|
/**
|
|
118
|
-
*
|
|
106
|
+
* Attribute Name
|
|
119
107
|
*/
|
|
120
108
|
attributeName?: pulumi.Input<string>;
|
|
121
109
|
/**
|
|
122
|
-
*
|
|
110
|
+
* Claim Name
|
|
123
111
|
*/
|
|
124
112
|
claimName?: pulumi.Input<string>;
|
|
125
|
-
/**
|
|
126
|
-
* Key/value attributes to add to the identity provider mapper model that is persisted to Keycloak. This can be used to extend the base model with new Keycloak features.
|
|
127
|
-
*/
|
|
128
113
|
extraConfig?: pulumi.Input<{
|
|
129
114
|
[key: string]: any;
|
|
130
115
|
}>;
|
|
131
116
|
/**
|
|
132
|
-
*
|
|
117
|
+
* IDP Alias
|
|
133
118
|
*/
|
|
134
119
|
identityProviderAlias?: pulumi.Input<string>;
|
|
135
120
|
/**
|
|
136
|
-
*
|
|
121
|
+
* IDP Mapper Name
|
|
137
122
|
*/
|
|
138
123
|
name?: pulumi.Input<string>;
|
|
139
124
|
/**
|
|
140
|
-
*
|
|
125
|
+
* Realm Name
|
|
141
126
|
*/
|
|
142
127
|
realm?: pulumi.Input<string>;
|
|
143
128
|
/**
|
|
144
|
-
*
|
|
129
|
+
* User Attribute
|
|
145
130
|
*/
|
|
146
131
|
userAttribute?: pulumi.Input<string>;
|
|
147
132
|
}
|
|
@@ -150,37 +135,34 @@ export interface AttributeImporterIdentityProviderMapperState {
|
|
|
150
135
|
*/
|
|
151
136
|
export interface AttributeImporterIdentityProviderMapperArgs {
|
|
152
137
|
/**
|
|
153
|
-
*
|
|
138
|
+
* Attribute Friendly Name
|
|
154
139
|
*/
|
|
155
140
|
attributeFriendlyName?: pulumi.Input<string>;
|
|
156
141
|
/**
|
|
157
|
-
*
|
|
142
|
+
* Attribute Name
|
|
158
143
|
*/
|
|
159
144
|
attributeName?: pulumi.Input<string>;
|
|
160
145
|
/**
|
|
161
|
-
*
|
|
146
|
+
* Claim Name
|
|
162
147
|
*/
|
|
163
148
|
claimName?: pulumi.Input<string>;
|
|
164
|
-
/**
|
|
165
|
-
* Key/value attributes to add to the identity provider mapper model that is persisted to Keycloak. This can be used to extend the base model with new Keycloak features.
|
|
166
|
-
*/
|
|
167
149
|
extraConfig?: pulumi.Input<{
|
|
168
150
|
[key: string]: any;
|
|
169
151
|
}>;
|
|
170
152
|
/**
|
|
171
|
-
*
|
|
153
|
+
* IDP Alias
|
|
172
154
|
*/
|
|
173
155
|
identityProviderAlias: pulumi.Input<string>;
|
|
174
156
|
/**
|
|
175
|
-
*
|
|
157
|
+
* IDP Mapper Name
|
|
176
158
|
*/
|
|
177
159
|
name?: pulumi.Input<string>;
|
|
178
160
|
/**
|
|
179
|
-
*
|
|
161
|
+
* Realm Name
|
|
180
162
|
*/
|
|
181
163
|
realm: pulumi.Input<string>;
|
|
182
164
|
/**
|
|
183
|
-
*
|
|
165
|
+
* User Attribute
|
|
184
166
|
*/
|
|
185
167
|
userAttribute: pulumi.Input<string>;
|
|
186
168
|
}
|
|
@@ -6,52 +6,43 @@ exports.AttributeImporterIdentityProviderMapper = void 0;
|
|
|
6
6
|
const pulumi = require("@pulumi/pulumi");
|
|
7
7
|
const utilities = require("./utilities");
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* ## # keycloak.AttributeImporterIdentityProviderMapper
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
* - For the OIDC identity provider, this will map a claim on the ID or access token to an attribute for the imported Keycloak user.
|
|
13
|
-
* - For the SAML identity provider, this will map a SAML attribute found within the assertion to an attribute for the imported Keycloak user.
|
|
14
|
-
* - For social identity providers, this will map a JSON field from the user profile to an attribute for the imported Keycloak user.
|
|
11
|
+
* Allows to create and manage identity provider mappers within Keycloak.
|
|
15
12
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* ## Example Usage
|
|
13
|
+
* ### Example Usage
|
|
19
14
|
*
|
|
20
15
|
* ```typescript
|
|
21
16
|
* import * as pulumi from "@pulumi/pulumi";
|
|
22
17
|
* import * as keycloak from "@pulumi/keycloak";
|
|
23
18
|
*
|
|
24
|
-
* const
|
|
19
|
+
* const testMapper = new keycloak.AttributeImporterIdentityProviderMapper("test_mapper", {
|
|
25
20
|
* realm: "my-realm",
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* alias: "oidc",
|
|
31
|
-
* authorizationUrl: "https://example.com/auth",
|
|
32
|
-
* tokenUrl: "https://example.com/token",
|
|
33
|
-
* clientId: "example_id",
|
|
34
|
-
* clientSecret: "example_token",
|
|
35
|
-
* defaultScopes: "openid random profile",
|
|
36
|
-
* });
|
|
37
|
-
* const oidcAttributeImporterIdentityProviderMapper = new keycloak.AttributeImporterIdentityProviderMapper("oidcAttributeImporterIdentityProviderMapper", {
|
|
38
|
-
* realm: realm.id,
|
|
39
|
-
* claimName: "my-email-claim",
|
|
40
|
-
* identityProviderAlias: oidcIdentityProvider.alias,
|
|
41
|
-
* userAttribute: "email",
|
|
42
|
-
* extraConfig: {
|
|
43
|
-
* syncMode: "INHERIT",
|
|
44
|
-
* },
|
|
21
|
+
* name: "my-mapper",
|
|
22
|
+
* identityProviderAlias: "idp_alias",
|
|
23
|
+
* attributeName: "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname",
|
|
24
|
+
* userAttribute: "lastName",
|
|
45
25
|
* });
|
|
46
26
|
* ```
|
|
47
27
|
*
|
|
48
|
-
*
|
|
28
|
+
* ### Argument Reference
|
|
49
29
|
*
|
|
50
|
-
*
|
|
30
|
+
* The following arguments are supported:
|
|
51
31
|
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
32
|
+
* - `realm` - (Required) The name of the realm.
|
|
33
|
+
* - `name` - (Required) The name of the mapper.
|
|
34
|
+
* - `identityProviderAlias` - (Required) The alias of the associated identity provider.
|
|
35
|
+
* - `userAttribute` - (Required) The user attribute name to store SAML attribute.
|
|
36
|
+
* - `attributeName` - (Optional) The Name of attribute to search for in assertion. You can leave this blank and specify a friendly name instead.
|
|
37
|
+
* - `attributeFriendlyName` - (Optional) The friendly name of attribute to search for in assertion. You can leave this blank and specify an attribute name instead.
|
|
38
|
+
* - `claimName` - (Optional) The claim name.
|
|
39
|
+
*
|
|
40
|
+
* ### Import
|
|
41
|
+
*
|
|
42
|
+
* Identity provider mapper can be imported using the format `{{realm_id}}/{{idp_alias}}/{{idp_mapper_id}}`, where `idpAlias` is the identity provider alias, and `idpMapperId` is the unique ID that Keycloak
|
|
43
|
+
* assigns to the mapper upon creation. This value can be found in the URI when editing this mapper in the GUI, and is typically a GUID.
|
|
44
|
+
*
|
|
45
|
+
* Example:
|
|
55
46
|
*/
|
|
56
47
|
class AttributeImporterIdentityProviderMapper extends pulumi.CustomResource {
|
|
57
48
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attributeImporterIdentityProviderMapper.js","sourceRoot":"","sources":["../attributeImporterIdentityProviderMapper.ts"],"names":[],"mappings":";AAAA,wFAAwF;AACxF,iFAAiF;;;AAEjF,yCAAyC;AACzC,yCAAyC;AAEzC
|
|
1
|
+
{"version":3,"file":"attributeImporterIdentityProviderMapper.js","sourceRoot":"","sources":["../attributeImporterIdentityProviderMapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ import * as pulumi from "@pulumi/pulumi";
|
|
|
14
14
|
* realm: "my-realm",
|
|
15
15
|
* enabled: true,
|
|
16
16
|
* });
|
|
17
|
-
* const
|
|
17
|
+
* const oidc = new keycloak.oidc.IdentityProvider("oidc", {
|
|
18
18
|
* realm: realm.id,
|
|
19
19
|
* alias: "oidc",
|
|
20
20
|
* authorizationUrl: "https://example.com/auth",
|
|
@@ -23,13 +23,15 @@ import * as pulumi from "@pulumi/pulumi";
|
|
|
23
23
|
* clientSecret: "example_token",
|
|
24
24
|
* defaultScopes: "openid random profile",
|
|
25
25
|
* });
|
|
26
|
-
* const realmRole = new keycloak.Role("
|
|
26
|
+
* const realmRole = new keycloak.Role("realm_role", {
|
|
27
27
|
* realmId: realm.id,
|
|
28
|
+
* name: "my-realm-role",
|
|
28
29
|
* description: "My Realm Role",
|
|
29
30
|
* });
|
|
30
|
-
* const oidcAttributeToRoleIdentityMapper = new keycloak.AttributeToRoleIdentityMapper("
|
|
31
|
+
* const oidcAttributeToRoleIdentityMapper = new keycloak.AttributeToRoleIdentityMapper("oidc", {
|
|
31
32
|
* realm: realm.id,
|
|
32
|
-
*
|
|
33
|
+
* name: "role-attribute",
|
|
34
|
+
* identityProviderAlias: oidc.alias,
|
|
33
35
|
* role: "my-realm-role",
|
|
34
36
|
* claimName: "my-claim",
|
|
35
37
|
* claimValue: "my-value",
|
|
@@ -41,10 +43,16 @@ import * as pulumi from "@pulumi/pulumi";
|
|
|
41
43
|
*
|
|
42
44
|
* ## Import
|
|
43
45
|
*
|
|
44
|
-
* Identity provider mappers can be imported using the format `{{realm_id}}/{{idp_alias}}/{{idp_mapper_id}}`, where `idp_alias` is the identity provider alias, and `idp_mapper_id` is the unique ID that Keycloak
|
|
46
|
+
* Identity provider mappers can be imported using the format `{{realm_id}}/{{idp_alias}}/{{idp_mapper_id}}`, where `idp_alias` is the identity provider alias, and `idp_mapper_id` is the unique ID that Keycloak
|
|
47
|
+
*
|
|
48
|
+
* assigns to the mapper upon creation. This value can be found in the URI when editing this mapper in the GUI, and is typically a GUID.
|
|
49
|
+
*
|
|
50
|
+
* Example:
|
|
51
|
+
*
|
|
52
|
+
* bash
|
|
45
53
|
*
|
|
46
54
|
* ```sh
|
|
47
|
-
*
|
|
55
|
+
* $ pulumi import keycloak:index/attributeToRoleIdentityMapper:AttributeToRoleIdentityMapper test_mapper my-realm/my-mapper/f446db98-7133-4e30-b18a-3d28fde7ca1b
|
|
48
56
|
* ```
|
|
49
57
|
*/
|
|
50
58
|
export declare class AttributeToRoleIdentityMapper extends pulumi.CustomResource {
|
|
@@ -20,7 +20,7 @@ const utilities = require("./utilities");
|
|
|
20
20
|
* realm: "my-realm",
|
|
21
21
|
* enabled: true,
|
|
22
22
|
* });
|
|
23
|
-
* const
|
|
23
|
+
* const oidc = new keycloak.oidc.IdentityProvider("oidc", {
|
|
24
24
|
* realm: realm.id,
|
|
25
25
|
* alias: "oidc",
|
|
26
26
|
* authorizationUrl: "https://example.com/auth",
|
|
@@ -29,13 +29,15 @@ const utilities = require("./utilities");
|
|
|
29
29
|
* clientSecret: "example_token",
|
|
30
30
|
* defaultScopes: "openid random profile",
|
|
31
31
|
* });
|
|
32
|
-
* const realmRole = new keycloak.Role("
|
|
32
|
+
* const realmRole = new keycloak.Role("realm_role", {
|
|
33
33
|
* realmId: realm.id,
|
|
34
|
+
* name: "my-realm-role",
|
|
34
35
|
* description: "My Realm Role",
|
|
35
36
|
* });
|
|
36
|
-
* const oidcAttributeToRoleIdentityMapper = new keycloak.AttributeToRoleIdentityMapper("
|
|
37
|
+
* const oidcAttributeToRoleIdentityMapper = new keycloak.AttributeToRoleIdentityMapper("oidc", {
|
|
37
38
|
* realm: realm.id,
|
|
38
|
-
*
|
|
39
|
+
* name: "role-attribute",
|
|
40
|
+
* identityProviderAlias: oidc.alias,
|
|
39
41
|
* role: "my-realm-role",
|
|
40
42
|
* claimName: "my-claim",
|
|
41
43
|
* claimValue: "my-value",
|
|
@@ -47,10 +49,16 @@ const utilities = require("./utilities");
|
|
|
47
49
|
*
|
|
48
50
|
* ## Import
|
|
49
51
|
*
|
|
50
|
-
* Identity provider mappers can be imported using the format `{{realm_id}}/{{idp_alias}}/{{idp_mapper_id}}`, where `idp_alias` is the identity provider alias, and `idp_mapper_id` is the unique ID that Keycloak
|
|
52
|
+
* Identity provider mappers can be imported using the format `{{realm_id}}/{{idp_alias}}/{{idp_mapper_id}}`, where `idp_alias` is the identity provider alias, and `idp_mapper_id` is the unique ID that Keycloak
|
|
53
|
+
*
|
|
54
|
+
* assigns to the mapper upon creation. This value can be found in the URI when editing this mapper in the GUI, and is typically a GUID.
|
|
55
|
+
*
|
|
56
|
+
* Example:
|
|
57
|
+
*
|
|
58
|
+
* bash
|
|
51
59
|
*
|
|
52
60
|
* ```sh
|
|
53
|
-
*
|
|
61
|
+
* $ pulumi import keycloak:index/attributeToRoleIdentityMapper:AttributeToRoleIdentityMapper test_mapper my-realm/my-mapper/f446db98-7133-4e30-b18a-3d28fde7ca1b
|
|
54
62
|
* ```
|
|
55
63
|
*/
|
|
56
64
|
class AttributeToRoleIdentityMapper extends pulumi.CustomResource {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attributeToRoleIdentityMapper.js","sourceRoot":"","sources":["../attributeToRoleIdentityMapper.ts"],"names":[],"mappings":";AAAA,wFAAwF;AACxF,iFAAiF;;;AAEjF,yCAAyC;AACzC,yCAAyC;AAEzC
|
|
1
|
+
{"version":3,"file":"attributeToRoleIdentityMapper.js","sourceRoot":"","sources":["../attributeToRoleIdentityMapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,14 +29,14 @@ import * as pulumi from "@pulumi/pulumi";
|
|
|
29
29
|
* alias: "my-flow-alias",
|
|
30
30
|
* });
|
|
31
31
|
* // first execution
|
|
32
|
-
* const executionOne = new keycloak.authentication.Execution("
|
|
32
|
+
* const executionOne = new keycloak.authentication.Execution("execution_one", {
|
|
33
33
|
* realmId: realm.id,
|
|
34
34
|
* parentFlowAlias: flow.alias,
|
|
35
35
|
* authenticator: "auth-cookie",
|
|
36
36
|
* requirement: "ALTERNATIVE",
|
|
37
37
|
* });
|
|
38
38
|
* // second execution
|
|
39
|
-
* const executionTwo = new keycloak.authentication.Execution("
|
|
39
|
+
* const executionTwo = new keycloak.authentication.Execution("execution_two", {
|
|
40
40
|
* realmId: realm.id,
|
|
41
41
|
* parentFlowAlias: flow.alias,
|
|
42
42
|
* authenticator: "identity-provider-redirector",
|
|
@@ -44,7 +44,7 @@ import * as pulumi from "@pulumi/pulumi";
|
|
|
44
44
|
* }, {
|
|
45
45
|
* dependsOn: [executionOne],
|
|
46
46
|
* });
|
|
47
|
-
* const browserAuthenticationBinding = new keycloak.authentication.Bindings("
|
|
47
|
+
* const browserAuthenticationBinding = new keycloak.authentication.Bindings("browser_authentication_binding", {
|
|
48
48
|
* realmId: realm.id,
|
|
49
49
|
* browserFlow: flow.alias,
|
|
50
50
|
* });
|
|
@@ -35,14 +35,14 @@ const utilities = require("../utilities");
|
|
|
35
35
|
* alias: "my-flow-alias",
|
|
36
36
|
* });
|
|
37
37
|
* // first execution
|
|
38
|
-
* const executionOne = new keycloak.authentication.Execution("
|
|
38
|
+
* const executionOne = new keycloak.authentication.Execution("execution_one", {
|
|
39
39
|
* realmId: realm.id,
|
|
40
40
|
* parentFlowAlias: flow.alias,
|
|
41
41
|
* authenticator: "auth-cookie",
|
|
42
42
|
* requirement: "ALTERNATIVE",
|
|
43
43
|
* });
|
|
44
44
|
* // second execution
|
|
45
|
-
* const executionTwo = new keycloak.authentication.Execution("
|
|
45
|
+
* const executionTwo = new keycloak.authentication.Execution("execution_two", {
|
|
46
46
|
* realmId: realm.id,
|
|
47
47
|
* parentFlowAlias: flow.alias,
|
|
48
48
|
* authenticator: "identity-provider-redirector",
|
|
@@ -50,7 +50,7 @@ const utilities = require("../utilities");
|
|
|
50
50
|
* }, {
|
|
51
51
|
* dependsOn: [executionOne],
|
|
52
52
|
* });
|
|
53
|
-
* const browserAuthenticationBinding = new keycloak.authentication.Bindings("
|
|
53
|
+
* const browserAuthenticationBinding = new keycloak.authentication.Bindings("browser_authentication_binding", {
|
|
54
54
|
* realmId: realm.id,
|
|
55
55
|
* browserFlow: flow.alias,
|
|
56
56
|
* });
|
|
@@ -22,14 +22,14 @@ import * as pulumi from "@pulumi/pulumi";
|
|
|
22
22
|
* alias: "my-flow-alias",
|
|
23
23
|
* });
|
|
24
24
|
* // first execution
|
|
25
|
-
* const executionOne = new keycloak.authentication.Execution("
|
|
25
|
+
* const executionOne = new keycloak.authentication.Execution("execution_one", {
|
|
26
26
|
* realmId: realm.id,
|
|
27
27
|
* parentFlowAlias: flow.alias,
|
|
28
28
|
* authenticator: "auth-cookie",
|
|
29
29
|
* requirement: "ALTERNATIVE",
|
|
30
30
|
* });
|
|
31
31
|
* // second execution
|
|
32
|
-
* const executionTwo = new keycloak.authentication.Execution("
|
|
32
|
+
* const executionTwo = new keycloak.authentication.Execution("execution_two", {
|
|
33
33
|
* realmId: realm.id,
|
|
34
34
|
* parentFlowAlias: flow.alias,
|
|
35
35
|
* authenticator: "identity-provider-redirector",
|
|
@@ -41,10 +41,14 @@ import * as pulumi from "@pulumi/pulumi";
|
|
|
41
41
|
*
|
|
42
42
|
* ## Import
|
|
43
43
|
*
|
|
44
|
-
* Authentication executions can be imported using the formats`{{realmId}}/{{parentFlowAlias}}/{{authenticationExecutionId}}`.
|
|
44
|
+
* Authentication executions can be imported using the formats: `{{realmId}}/{{parentFlowAlias}}/{{authenticationExecutionId}}`.
|
|
45
|
+
*
|
|
46
|
+
* Example:
|
|
47
|
+
*
|
|
48
|
+
* bash
|
|
45
49
|
*
|
|
46
50
|
* ```sh
|
|
47
|
-
*
|
|
51
|
+
* $ pulumi import keycloak:authentication/execution:Execution execution_one my-realm/my-flow-alias/30559fcf-6fb8-45ea-8c46-2b86f46ebc17
|
|
48
52
|
* ```
|
|
49
53
|
*/
|
|
50
54
|
export declare class Execution extends pulumi.CustomResource {
|
|
@@ -28,14 +28,14 @@ const utilities = require("../utilities");
|
|
|
28
28
|
* alias: "my-flow-alias",
|
|
29
29
|
* });
|
|
30
30
|
* // first execution
|
|
31
|
-
* const executionOne = new keycloak.authentication.Execution("
|
|
31
|
+
* const executionOne = new keycloak.authentication.Execution("execution_one", {
|
|
32
32
|
* realmId: realm.id,
|
|
33
33
|
* parentFlowAlias: flow.alias,
|
|
34
34
|
* authenticator: "auth-cookie",
|
|
35
35
|
* requirement: "ALTERNATIVE",
|
|
36
36
|
* });
|
|
37
37
|
* // second execution
|
|
38
|
-
* const executionTwo = new keycloak.authentication.Execution("
|
|
38
|
+
* const executionTwo = new keycloak.authentication.Execution("execution_two", {
|
|
39
39
|
* realmId: realm.id,
|
|
40
40
|
* parentFlowAlias: flow.alias,
|
|
41
41
|
* authenticator: "identity-provider-redirector",
|
|
@@ -47,10 +47,14 @@ const utilities = require("../utilities");
|
|
|
47
47
|
*
|
|
48
48
|
* ## Import
|
|
49
49
|
*
|
|
50
|
-
* Authentication executions can be imported using the formats`{{realmId}}/{{parentFlowAlias}}/{{authenticationExecutionId}}`.
|
|
50
|
+
* Authentication executions can be imported using the formats: `{{realmId}}/{{parentFlowAlias}}/{{authenticationExecutionId}}`.
|
|
51
|
+
*
|
|
52
|
+
* Example:
|
|
53
|
+
*
|
|
54
|
+
* bash
|
|
51
55
|
*
|
|
52
56
|
* ```sh
|
|
53
|
-
*
|
|
57
|
+
* $ pulumi import keycloak:authentication/execution:Execution execution_one my-realm/my-flow-alias/30559fcf-6fb8-45ea-8c46-2b86f46ebc17
|
|
54
58
|
* ```
|
|
55
59
|
*/
|
|
56
60
|
class Execution extends pulumi.CustomResource {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../authentication/execution.ts"],"names":[],"mappings":";AAAA,wFAAwF;AACxF,iFAAiF;;;AAEjF,yCAAyC;AACzC,0CAA0C;AAE1C
|
|
1
|
+
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../authentication/execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,10 +34,18 @@ import * as pulumi from "@pulumi/pulumi";
|
|
|
34
34
|
*
|
|
35
35
|
* ## Import
|
|
36
36
|
*
|
|
37
|
-
* Configurations can be imported using the format `{{realm}}/{{authenticationExecutionId}}/{{authenticationExecutionConfigId}}`.
|
|
37
|
+
* Configurations can be imported using the format `{{realm}}/{{authenticationExecutionId}}/{{authenticationExecutionConfigId}}`.
|
|
38
|
+
*
|
|
39
|
+
* If the `authenticationExecutionId` is incorrect, the import will still be successful.
|
|
40
|
+
*
|
|
41
|
+
* A subsequent apply will change the `authenticationExecutionId` to the correct one, which causes the configuration to be replaced.
|
|
42
|
+
*
|
|
43
|
+
* Example:
|
|
44
|
+
*
|
|
45
|
+
* bash
|
|
38
46
|
*
|
|
39
47
|
* ```sh
|
|
40
|
-
*
|
|
48
|
+
* $ pulumi import keycloak:authentication/executionConfig:ExecutionConfig config my-realm/be081463-ddbf-4b42-9eff-9c97886f24ff/30559fcf-6fb8-45ea-8c46-2b86f46ebc17
|
|
41
49
|
* ```
|
|
42
50
|
*/
|
|
43
51
|
export declare class ExecutionConfig extends pulumi.CustomResource {
|
|
@@ -40,10 +40,18 @@ const utilities = require("../utilities");
|
|
|
40
40
|
*
|
|
41
41
|
* ## Import
|
|
42
42
|
*
|
|
43
|
-
* Configurations can be imported using the format `{{realm}}/{{authenticationExecutionId}}/{{authenticationExecutionConfigId}}`.
|
|
43
|
+
* Configurations can be imported using the format `{{realm}}/{{authenticationExecutionId}}/{{authenticationExecutionConfigId}}`.
|
|
44
|
+
*
|
|
45
|
+
* If the `authenticationExecutionId` is incorrect, the import will still be successful.
|
|
46
|
+
*
|
|
47
|
+
* A subsequent apply will change the `authenticationExecutionId` to the correct one, which causes the configuration to be replaced.
|
|
48
|
+
*
|
|
49
|
+
* Example:
|
|
50
|
+
*
|
|
51
|
+
* bash
|
|
44
52
|
*
|
|
45
53
|
* ```sh
|
|
46
|
-
*
|
|
54
|
+
* $ pulumi import keycloak:authentication/executionConfig:ExecutionConfig config my-realm/be081463-ddbf-4b42-9eff-9c97886f24ff/30559fcf-6fb8-45ea-8c46-2b86f46ebc17
|
|
47
55
|
* ```
|
|
48
56
|
*/
|
|
49
57
|
class ExecutionConfig extends pulumi.CustomResource {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executionConfig.js","sourceRoot":"","sources":["../../authentication/executionConfig.ts"],"names":[],"mappings":";AAAA,wFAAwF;AACxF,iFAAiF;;;AAEjF,yCAAyC;AACzC,0CAA0C;AAE1C
|
|
1
|
+
{"version":3,"file":"executionConfig.js","sourceRoot":"","sources":["../../authentication/executionConfig.ts"],"names":[],"mappings":"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"}
|