diff --git a/components/idp-mgt/org.wso2.carbon.idp.mgt/src/test/resources/repository/conf/identity/identity.xml b/components/idp-mgt/org.wso2.carbon.idp.mgt/src/test/resources/repository/conf/identity/identity.xml
index 3ebf4e0bdb1..989880e515d 100644
--- a/components/idp-mgt/org.wso2.carbon.idp.mgt/src/test/resources/repository/conf/identity/identity.xml
+++ b/components/idp-mgt/org.wso2.carbon.idp.mgt/src/test/resources/repository/conf/identity/identity.xml
@@ -738,7 +738,7 @@
- applications,identity-providers
+ applications,connections,identity-providers
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/apple/info.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/apple/info.json
new file mode 100755
index 00000000000..8fd4413baf9
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/apple/info.json
@@ -0,0 +1,10 @@
+{
+ "id": "apple-idp",
+ "name": "Apple",
+ "description": "Login users with their Apple IDs.",
+ "image": "assets/images/logos/apple.svg",
+ "displayOrder": 5,
+ "category": "DEFAULT",
+ "tags": [ "Social-Login" ],
+ "type": "identity-provider"
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/apple/metadata.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/apple/metadata.json
new file mode 100755
index 00000000000..0e9fefa9f7d
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/apple/metadata.json
@@ -0,0 +1,352 @@
+{
+ "create": {
+ "image": "assets/images/logos/apple.svg",
+ "header": "Apple",
+ "Subheading": "Login users with their Apple IDs.",
+ "documentation": "{ENV}/asgardeo/docs/guides/authentication/social-login/add-apple-login/",
+ "modal": {
+ "form": {
+ "fields": [
+ {
+ "index": 0,
+ "ariaLabel": "Apple IDP Name",
+ "name": "name",
+ "label": "Name",
+ "type": "text",
+ "required": true,
+ "placeholder": "Enter a name for the connection.",
+ "initialValue": "Apple",
+ "maxLength": "50",
+ "minLength": "3",
+ "data-testid": "apple-idp-create-wizard-content-idp-name",
+ "width": "13"
+ },
+ {
+ "index": 1,
+ "ariaLabel": "Apple Client ID",
+ "type": "text",
+ "name": "clientId",
+ "label": "Services ID",
+ "placeholder": "Enter the Services ID registered for the Apple application.",
+ "required": true,
+ "autoComplete": true,
+ "maxLength": "100",
+ "minLength": "3",
+ "data-testid": "apple-idp-create-wizard-content-idp-client-id",
+ "width": "13"
+ },
+ {
+ "index": 2,
+ "ariaLabel": "Apple Team ID",
+ "type": "text",
+ "name": "teamId",
+ "label": "Team ID",
+ "placeholder": "Enter the Team ID of the Apple developer team.",
+ "required": true,
+ "autoComplete": true,
+ "maxLength": "10",
+ "minLength": "10",
+ "data-testid": "apple-idp-create-wizard-content-idp-team-id",
+ "width": "13"
+ },
+ {
+ "index": 3,
+ "ariaLabel": "Apple Key ID",
+ "type": "text",
+ "name": "keyId",
+ "label": "Key ID",
+ "placeholder": "Enter the the Key ID of the application's private key.",
+ "required": true,
+ "autoComplete": true,
+ "maxLength": "10",
+ "minLength": "10",
+ "data-testid": "apple-idp-create-wizard-content-idp-key-id",
+ "width": "13"
+ },
+ {
+ "index": 4,
+ "ariaLabel": "Apple Private Key",
+ "type": "password",
+ "name": "privateKey",
+ "label": "Private Key",
+ "placeholder": "Enter the Private Key generated for the Apple application.",
+ "required": true,
+ "autoComplete": true,
+ "data-testid": "apple-idp-create-wizard-content-idp-private-key",
+ "maxLength": "1000",
+ "minLength": "100",
+ "width": "13"
+ }
+ ]
+ },
+ "wizardHelp": {
+ "message": {
+ "copyInputFields": [
+ {
+ "description": "Use the following as a Web Domain.",
+ "value": "domain_name"
+ },
+ {
+ "description": "Add the following URL as a Return URL.",
+ "value": "redirect_uri"
+ }
+ ],
+ "header": "Prerequites",
+ "paragraphs": [
+ "Before you begin, create a Sign in With Apple enabled application on Apple Developer Portal with a Services ID and a Private Key."
+ ],
+ "link": {
+ "text": "See Apple's guide on configuring your environment for Sign in with Apple.",
+ "url": "https://developer.apple.com/documentation/sign_in_with_apple/configuring_your_environment_for_sign_in_with_apple"
+ }
+ },
+ "fields": [
+ {
+ "fieldName": "Name",
+ "hint": "Provide a unique name for the connection."
+ },
+ {
+ "fieldName": "Services ID",
+ "hint": "Provide the Services ID
created at Apple."
+ },
+ {
+ "fieldName": "Team ID",
+ "hint": "Provide the Apple developer Team ID
."
+ },
+ {
+ "fieldName": "Key ID",
+ "hint": "Provide the Key Identifier
of the private key generated."
+ },
+ {
+ "fieldName": "Private Key",
+ "hint": "Provide the Private Key
generated for the application."
+ }
+ ]
+ }
+ },
+ "properties": [
+ {
+ "key": "ClientId",
+ "value": ""
+ },
+ {
+ "key": "ClientSecret",
+ "value": ""
+ },
+ {
+ "key": "SecretValidityPeriod",
+ "value": "15777000"
+ },
+ {
+ "key": "TeamId",
+ "value": ""
+ },
+ {
+ "key": "KeyId",
+ "value": ""
+ },
+ {
+ "key": "PrivateKey",
+ "value": ""
+ },
+ {
+ "key": "callbackUrl",
+ "value": "/commonauth"
+ },
+ {
+ "key": "Scopes",
+ "value": "email,name"
+ },
+ {
+ "key": "AdditionalQueryParameters",
+ "value": ""
+ },
+ {
+ "key": "RegenerateClientSecret",
+ "value": "false"
+ },
+ {
+ "key": "SecretExpiryEpochTime",
+ "value": "0"
+ }
+ ]
+ },
+ "edit" : {
+ "tabs": {
+ "general" : [
+ {
+ "index": 0,
+ "displayOrder" : 1,
+ "ariaLabel": "name",
+ "inputType": "resource_name",
+ "type": "text",
+ "name": "name",
+ "label": "Name",
+ "required": true ,
+ "message": "Identity Provider name is required",
+ "placeholder": "Apple",
+ "validation": true,
+ "value": "",
+ "maxLength": "50",
+ "minLength": "3",
+ "data-testid": "idp-edit-page-general-settings-form-idp-name",
+ "hint": "Enter a unique name for this connection.",
+ "readOnly": false
+ },
+ {
+ "index": 1,
+ "displayOrder" : 2,
+ "type": "textarea",
+ "name" : "description",
+ "ariaLabel" : "description",
+ "label" : "Description",
+ "required": false,
+ "placeholder": "Enter a description of the identity provider.",
+ "value": "",
+ "data-testid": "idp-edit-page-general-settings-form-idp-description",
+ "maxLength": "300",
+ "minLength": "3",
+ "hint": "A text description of the identity provider.",
+ "readOnly": false
+ },
+ {
+ "index": 2,
+ "displayOrder" : 3,
+ "name": "jwks_endpoint",
+ "ariaLabel": "JWKS Endpoint URL",
+ "inputType": "url",
+ "type": "text",
+ "label": "JWKS Endpoint URL",
+ "required": true,
+ "placeholder": "https://{ oauth-provider-url }/oauth/jwks",
+ "value": "",
+ "data-testid": "",
+ "maxLength": "2048",
+ "minLength": "10",
+ "hint": "A JSON Web Key (JWK) Set is a JSON object that represents a set of JWKs. The JSON object MUST have a keys member, with its value being an array of JWKs.",
+ "readOnly": false
+ },
+ {
+ "index": 3,
+ "displayOrder" : 4,
+ "type": "certbox",
+ "isJWKSEnabled": "",
+ "isReadOnly": "",
+ "editingIDP": "",
+ "onUpdate": "",
+ "isPEMEnabled": ""
+ }
+
+ ],
+ "settings" : [
+ {
+ "index": 0,
+ "displayOrder" : 5,
+ "ariaLabel": "Apple authenticator client ID",
+ "inputType": "default",
+ "name": "ClientId",
+ "label": "Services ID",
+ "placeholder": "Enter the Services ID registered for the Apple application.",
+ "hint": "The unique identifier which is provided when creating the Apple Services ID.",
+ "required": true,
+ "readOnly": false,
+ "value": "",
+ "maxLength": "50",
+ "minLength": "3",
+ "width": "16",
+ "data-testid": "idp-edit-page-authenticator-settings-AppleOIDCAuthenticator-content-client-id"
+ },
+ {
+ "index": 1,
+ "displayOrder" : 6,
+ "ariaLabel": "Apple authenticator team ID",
+ "inputType": "default",
+ "name": "TeamId",
+ "label": "Team ID",
+ "placeholder": "Enter the Team ID of the Apple developer team.",
+ "hint": "The generated unique ID which is assigned to the Apple developer team.",
+ "required": true,
+ "readOnly": false,
+ "value": "",
+ "maxLength": "10",
+ "minLength": "10",
+ "width": "16",
+ "data-testid": "idp-edit-page-authenticator-settings-AppleOIDCAuthenticator-content-team-id"
+ },
+ {
+ "index": 2,
+ "displayOrder" : 7,
+ "ariaLabel": "Apple authenticator private key",
+ "inputType": "password",
+ "type": "password",
+ "name": "PrivateKey",
+ "label": "Private Key",
+ "placeholder": "Enter the Private Key generated for the Apple application.",
+ "hint": "The generated private key for the Apple application.",
+ "required": true,
+ "readOnly": false,
+ "value": "",
+ "maxLength": "1000",
+ "minLength": "100",
+ "width": "16",
+ "data-testid": "idp-edit-page-authenticator-settings-AppleOIDCAuthenticator-content-private-key"
+ },
+ {
+ "index": 3,
+ "displayOrder" : 8,
+ "ariaLabel": "Client secret validity period",
+ "inputType": "default",
+ "type": "text",
+ "name": "SecretValidityPeriod",
+ "label": "Client Secret Validity Period",
+ "placeholder": "Enter the Private Key generated for the Apple application.",
+ "hint": "The generated private key for the Apple application.",
+ "required": true,
+ "readOnly": false,
+ "value": "",
+ "maxLength": "8",
+ "minLength": "2",
+ "width": "16",
+ "data-testid": "idp-edit-page-authenticator-settings-AppleOIDCAuthenticator-content-secret-validity-period"
+ },
+ {
+ "index": 4,
+ "displayOrder" : 9,
+ "type": "text",
+ "ariaLabel": "Apple authenticator authorized redirect URL",
+ "inputType": "copy_input",
+ "name": "callbackUrl",
+ "label": "Authorized redirect URI",
+ "placeholder": "",
+ "hint": "The authorized redirect URI used to obtain Apple credentials.",
+ "required": "",
+ "value": "",
+ "readOnly": true,
+ "maxLength": "",
+ "minLength": "",
+ "width": "16",
+ "data-testid": "idp-edit-page-authenticator-settings-AppleOIDCAuthenticator-content-authorized-redirect-url-wrapper"
+ },
+ {
+ "index": 5,
+ "displayOrder" : 10,
+ "ariaLabel": "Additional query parameters",
+ "inputType": "default",
+ "name": "AdditionalQueryParameters",
+ "label": "Additional Query Parameters",
+ "placeholder": "Enter additional query parameters.",
+ "hint": "Additional query parameters to be sent to Apple.",
+ "required": false,
+ "value": "",
+ "readOnly": false,
+ "maxLength": "1000",
+ "minLength": "0",
+ "width": "16",
+ "data-testid": "idp-edit-page-authenticator-settings-AppleOIDCAuthenticator-content-additional-query-parameters"
+ }
+ ],
+ "quickStart": "apple"
+ }
+
+ }
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/apple/template.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/apple/template.json
new file mode 100755
index 00000000000..55a6bd844c2
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/apple/template.json
@@ -0,0 +1,213 @@
+{
+ "id": "apple-idp",
+ "name": "Apple",
+ "description": "Login users with their Apple IDs.",
+ "docLink": "/guides/authentication/social-login/add-apple-login/",
+ "image": "assets/images/logos/apple.svg",
+ "category": "DEFAULT",
+ "displayOrder": 5,
+ "services": [],
+ "tags": [ "Social-Login" ],
+ "idp": {
+ "name": "Apple",
+ "description": "",
+ "image": "",
+ "isPrimary": false,
+ "isFederationHub": false,
+ "homeRealmIdentifier": "",
+ "certificate": {
+ "certificates": []
+ },
+ "alias": "https://localhost:9444/oauth2/token",
+ "claims": {
+ "userIdClaim": {
+ "uri": "email"
+ },
+ "roleClaim": {
+ "uri": "http://wso2.org/claims/role"
+ },
+ "mappings": [
+ {
+ "idpClaim": "email",
+ "localClaim": {
+ "id": "aHR0cDovL3dzbzIub3JnL2NsYWltcy9lbWFpbGFkZHJlc3M",
+ "uri": "http://wso2.org/claims/emailaddress",
+ "displayName": "Email"
+ }
+ },
+ {
+ "idpClaim": "firstName",
+ "localClaim": {
+ "id": "aHR0cDovL3dzbzIub3JnL2NsYWltcy9naXZlbm5hbWU",
+ "uri": "http://wso2.org/claims/givenname",
+ "displayName": "First Name"
+ }
+ },
+ {
+ "idpClaim": "lastName",
+ "localClaim": {
+ "id": "aHR0cDovL3dzbzIub3JnL2NsYWltcy9sYXN0bmFtZQ",
+ "uri": "http://wso2.org/claims/lastname",
+ "displayName": "Last Name"
+ }
+ }
+ ],
+ "provisioningClaims": []
+ },
+ "roles": {
+ "mappings": [],
+ "outboundProvisioningRoles": []
+ },
+ "provisioning": {
+ "jit": {
+ "isEnabled": true,
+ "scheme": "PROVISION_SILENTLY",
+ "userstore": "DEFAULT",
+ "attributeSyncMethod": "NONE"
+ }
+ },
+ "federatedAuthenticators": {
+ "defaultAuthenticatorId": "QXBwbGVPSURDQXV0aGVudGljYXRvcg",
+ "authenticators": [
+ {
+ "authenticatorId": "QXBwbGVPSURDQXV0aGVudGljYXRvcg",
+ "isEnabled": true,
+ "properties": [
+ {
+ "key": "ClientId",
+ "displayName": "Services ID (Client ID)",
+ "description": "Enter Apple IDP services ID value",
+ "type": "STRING",
+ "displayOrder": 1,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "TeamId",
+ "displayName": "Team ID",
+ "description": "Enter Apple developer team ID value",
+ "type": "STRING",
+ "displayOrder": 2,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "KeyId",
+ "displayName": "Key ID",
+ "description": "Enter key ID value of the private key",
+ "type": "STRING",
+ "displayOrder": 3,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "PrivateKey",
+ "displayName": "Private Key",
+ "description": "Enter Apple private key generated for the app",
+ "type": "STRING",
+ "displayOrder": 4,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": true,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "SecretValidityPeriod",
+ "displayName": "Client Secret Validity Period",
+ "description": "Enter the validity period of the generated client secret in seconds.",
+ "type": "STRING",
+ "displayOrder": 5,
+ "regex": ".*",
+ "isMandatory": false,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "15777000",
+ "subProperties": []
+ },
+ {
+ "key": "callbackUrl",
+ "displayName": "Callback URL",
+ "description": "Enter the callback URL used to obtain Apple credentials.",
+ "type": "STRING",
+ "displayOrder": 6,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "Scopes",
+ "displayName": "Scopes",
+ "description": "Enter a space separated list of scopes to request from the user.",
+ "type": "STRING",
+ "displayOrder": 7,
+ "regex": ".*",
+ "isMandatory": false,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "AdditionalQueryParameters",
+ "displayName": "Additional Query Parameters",
+ "description": "Additional query parameters to be sent to Apple.",
+ "type": "STRING",
+ "displayOrder": 8,
+ "regex": ".*",
+ "isMandatory": false,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "ClientSecret",
+ "displayName": "Client Secret",
+ "description": "Apple client secret generated for the app",
+ "type": "STRING",
+ "displayOrder": 9,
+ "regex": ".*",
+ "isMandatory": false,
+ "isConfidential": true,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "RegenerateClientSecret",
+ "displayName": "Regenerate Client Secret",
+ "description": "Specifies if the client secret should be re-generated.",
+ "type": "BOOLEAN",
+ "displayOrder": 10,
+ "regex": ".*",
+ "isMandatory": false,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "type": "SOCIAL",
+ "templateId": "apple-idp"
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/enterprise-identity-provider/template.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/enterprise-identity-provider/template.json
new file mode 100755
index 00000000000..2df38561064
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/enterprise-identity-provider/template.json
@@ -0,0 +1,39 @@
+{
+ "category": "DEFAULT",
+ "description": "Enterprise login via standard protocols",
+ "displayOrder": 7,
+ "id": "enterprise-idp",
+ "idp": {
+ "certificate": {},
+ "claims": {
+ "provisioningClaims": [],
+ "roleClaim": {
+ "uri": ""
+ },
+ "userIdClaim": {
+ "uri": ""
+ }
+ },
+ "description": "",
+ "federatedAuthenticators": {
+ "authenticators": [],
+ "defaultAuthenticatorId": ""
+ },
+ "homeRealmIdentifier": "",
+ "image": "",
+ "isFederationHub": false,
+ "isPrimary": false,
+ "name": "Enterprise Authentication Provider",
+ "provisioning": {},
+ "roles": {
+ "mappings": [],
+ "outboundProvisioningRoles": []
+ }
+ },
+ "image": "assets/images/logos/enterprise.svg",
+ "name": "Enterprise",
+ "services": [],
+ "disabled": false,
+ "templateId": "enterprise-idp",
+ "type": "ENTERPRISE"
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/facebook/info.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/facebook/info.json
new file mode 100755
index 00000000000..2738ee140f8
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/facebook/info.json
@@ -0,0 +1,10 @@
+{
+ "id": "facebook-idp",
+ "name": "Facebook",
+ "description": "Login users with existing Facebook accounts.",
+ "image": "assets/images/logos/facebook.svg",
+ "category": "DEFAULT",
+ "displayOrder": 3,
+ "tags": [ "Social-Login" ],
+ "type": "identity-provider"
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/facebook/metadata.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/facebook/metadata.json
new file mode 100755
index 00000000000..1f304da5f3d
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/facebook/metadata.json
@@ -0,0 +1,243 @@
+{
+ "create": {
+ "image": "assets/images/logos/facebook.svg",
+ "header": "Facebook",
+ "Subheading": "Enable login for users with existing Facebook accounts",
+ "documentation": "{ ENV }/asgardeo/docs/guides/authentication/social-login/add-facebook-login/",
+ "modal": {
+ "form": {
+ "fields": [
+ {
+ "index": 0,
+ "ariaLabel": "Facebook IDP Name",
+ "name": "name",
+ "label": "Name",
+ "type": "text",
+ "required": true,
+ "placeholder": "Enter a name for the connection.",
+ "initialValue": "Facebook",
+ "data-testid": "facebook-idp-create-wizard-content-idp-name",
+ "maxLength": "50",
+ "minLength": "3",
+ "width": "13"
+ },
+ {
+ "index": 1,
+ "ariaLabel": "Facebook Client ID",
+ "type": "text",
+ "name": "clientId",
+ "label": "App ID",
+ "placeholder": "Enter App ID from Facebook application.",
+ "required": true,
+ "autoComplete": true,
+ "data-testid": "facebook-idp-create-wizard-content-idp-client-id",
+ "maxLength": "100",
+ "minLength": "3",
+ "width": "13"
+
+ },
+ {
+ "index": 2,
+ "ariaLabel": "Facebook Client Secret",
+ "className": "addon-field-wrapper",
+ "type": "password",
+ "name": "clientSecret",
+ "label": "App secret",
+ "placeholder": "Enter App secret from Facebook application.",
+ "required": true,
+ "autoComplete": true,
+ "data-testid": "facebook-idp-create-wizard-content-idp-client-secret",
+ "maxLength": "100",
+ "minLength": "3",
+ "width": "13"
+ }
+ ]
+
+ },
+ "wizardHelp": {
+ "message": {
+ "copyInputFields": [
+ {
+ "description": "Use the following as the Site URL.",
+ "value": "site_url"
+ },
+ {
+ "description": "Add the following URL as a Valid OAuth Redirect URI.",
+ "value": "redirect_uri"
+ }
+ ],
+ "header": "Prerequites",
+ "paragraphs": [
+ "Before you begin, create an application on Facebook Developer Console, and obtain a App ID & secret."
+ ],
+ "link": {
+ "text": "See Facebooks's guide on configuring apps.",
+ "url": "https://developers.facebook.com/docs/development/create-an-app"
+ }
+ },
+ "fields": [
+ {
+ "fieldName": "Name",
+ "hint": "Provide a unique name for the connection."
+ },
+ {
+ "fieldName": "App ID",
+ "hint": "Provide the App ID
you received from Facebook when you registered the OAuth app."
+ },
+ {
+ "fieldName": "App secret",
+ "hint": "Provide the App secret
you received from Facebook when you registered the OAuth app."
+ }
+ ]
+ }
+ },
+ "properties": [
+ {
+ "key": "ClientId",
+ "value": ""
+ },
+ {
+ "key": "ClientSecret",
+ "value": ""
+ },
+ {
+ "key": "callBackUrl",
+ "value": "/commonauth"
+ },
+ {
+ "key": "Scope",
+ "value": "email,public_profile"
+ },
+ {
+ "key": "UserInfoFields",
+ "value": "id,name,gender,emai,first_name,last_name,age_range,link"
+ }
+ ]
+ },
+ "edit" : {
+ "tabs": {
+ "general" : [
+ {
+ "index": 0,
+ "displayOrder" : 1,
+ "ariaLabel": "name",
+ "inputType": "resource_name",
+ "type": "text",
+ "name": "name",
+ "label": "Name",
+ "required": true ,
+ "message": "Identity Provider name is required",
+ "placeholder": "Facebook",
+ "validation": true,
+ "value": "",
+ "maxLength": "50",
+ "minLength": "3",
+ "data-testid": "idp-edit-page-general-settings-form-idp-name",
+ "hint": "Enter a unique name for this connection.",
+ "readOnly": false
+ },
+ {
+ "index": 1,
+ "displayOrder" : 2,
+ "type": "textarea",
+ "name" : "description",
+ "ariaLabel" : "description",
+ "label" : "Description",
+ "required": false,
+ "placeholder": "Enter a description of the identity provider.",
+ "value": "",
+ "data-testid": "idp-edit-page-general-settings-form-idp-description",
+ "maxLength": "300",
+ "minLength": "3",
+ "hint": "A text description of the identity provider.",
+ "readOnly": false
+ },
+ {
+ "index": 2,
+ "displayOrder" : 3,
+ "name": "jwks_endpoint",
+ "ariaLabel": "JWKS Endpoint URL",
+ "inputType": "url",
+ "type": "text",
+ "label": "JWKS Endpoint URL",
+ "required": true,
+ "placeholder": "https://{ oauth-provider-url }/oauth/jwks",
+ "value": "",
+ "data-testid": "",
+ "maxLength": "2048",
+ "minLength": "10",
+ "hint": "A JSON Web Key (JWK) Set is a JSON object that represents a set of JWKs. The JSON object MUST have a keys member, with its value being an array of JWKs.",
+ "readOnly": false
+ },
+ {
+ "index": 3,
+ "displayOrder" : 4,
+ "type": "certbox",
+ "isJWKSEnabled": "",
+ "isReadOnly": "",
+ "editingIDP": "",
+ "onUpdate": "",
+ "isPEMEnabled": ""
+ }
+ ],
+ "settings" : [
+ {
+ "index": 0,
+ "displayOrder" : 5,
+ "ariaLabel": "Facebook authenticator client ID",
+ "inputType": "default",
+ "name": "ClientId",
+ "label": "App ID",
+ "placeholder": "Enter App ID from Facebook application.",
+ "hint": "The generated unique ID which is generated when the Facebook OAuth app is created.",
+ "required": true,
+ "readOnly": false,
+ "value": "",
+ "maxLength": "50",
+ "minLength": "3",
+ "width": "16",
+ "data-testid": "idp-edit-page-authenticator-settings-FacebookAuthenticator-content-client-id"
+ },
+ {
+ "index": 1,
+ "displayOrder" : 6,
+ "ariaLabel": "Facebook authenticator client secret",
+ "className": "addon-field-wrapper",
+ "inputType": "password",
+ "type": "password",
+ "name": "ClientSecret",
+ "label": "App secret",
+ "placeholder": "Enter App secret from Facebook application.",
+ "hint": "The App secret value of the Facebook OAuth app.",
+ "required": true,
+ "readOnly": false,
+ "value": "",
+ "maxLength": "50",
+ "minLength": "3",
+ "width": "16",
+ "data-testid": "idp-edit-page-authenticator-settings-FacebookAuthenticator-content-client-secret"
+ },
+ {
+ "index": 2,
+ "displayOrder" : 7,
+ "type": "text",
+ "ariaLabel": "Facebook authenticator authorized redirect URL",
+ "inputType": "copy_input",
+ "name": "callBackUrl",
+ "label": "Valid OAuth redirect URI",
+ "placeholder": "",
+ "hint": "The redirect URI specified as valid in the Facebook OAuth app.",
+ "required": "",
+ "value": "",
+ "readOnly": true,
+ "maxLength": "",
+ "minLength": "",
+ "width": "16",
+ "data-testid": "idp-edit-page-authenticator-settings-FacebookAuthenticator-content-authorized-redirect-url-wrapper"
+ }
+ ],
+ "quickStart": "facebook"
+ }
+
+ }
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/facebook/template.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/facebook/template.json
new file mode 100755
index 00000000000..0d0a0c1446f
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/facebook/template.json
@@ -0,0 +1,211 @@
+{
+ "id": "facebook-idp",
+ "name": "Facebook",
+ "description": "Login users with existing Facebook accounts.",
+ "docLink": "/guides/authentication/social-login/add-facebook-login/",
+ "image": "assets/images/logos/facebook.svg",
+ "category": "DEFAULT",
+ "displayOrder": 3,
+ "services": [],
+ "tags": [ "Social-Login" ],
+ "idp": {
+ "name": "Facebook",
+ "description": "",
+ "image": "",
+ "isPrimary": false,
+ "isFederationHub": false,
+ "homeRealmIdentifier": "",
+ "certificate": {
+ "certificates": []
+ },
+ "alias": "https://localhost:9444/oauth2/token",
+ "claims": {
+ "userIdClaim": {
+ "uri": "email"
+ },
+ "roleClaim": {
+ "uri": "http://wso2.org/claims/role"
+ },
+ "mappings": [
+ {
+ "idpClaim": "email",
+ "localClaim": {
+ "id": "aHR0cDovL3dzbzIub3JnL2NsYWltcy9lbWFpbGFkZHJlc3M",
+ "uri": "http://wso2.org/claims/emailaddress",
+ "displayName": "Email"
+ }
+ },
+ {
+ "idpClaim": "gender",
+ "localClaim": {
+ "id": "aHR0cDovL3dzbzIub3JnL2NsYWltcy9nZW5kZXI",
+ "uri": "http://wso2.org/claims/gender",
+ "displayName": "Gender"
+ }
+ },
+ {
+ "idpClaim": "name",
+ "localClaim": {
+ "id": "aHR0cDovL3dzbzIub3JnL2NsYWltcy9mdWxsbmFtZQ",
+ "uri": "http://wso2.org/claims/fullname",
+ "displayName": "Full Name"
+ }
+ },
+ {
+ "idpClaim": "first_name",
+ "localClaim": {
+ "id": "aHR0cDovL3dzbzIub3JnL2NsYWltcy9naXZlbm5hbWU",
+ "uri": "http://wso2.org/claims/givenname",
+ "displayName": "First Name"
+ }
+ },
+ {
+ "idpClaim": "last_name",
+ "localClaim": {
+ "id": "aHR0cDovL3dzbzIub3JnL2NsYWltcy9sYXN0bmFtZQ",
+ "uri": "http://wso2.org/claims/lastname",
+ "displayName": "Last Name"
+ }
+ },
+ {
+ "idpClaim": "age_range",
+ "localClaim": {
+ "id": "aHR0cDovL3dzbzIub3JnL2NsYWltcy9kb2I",
+ "uri": "http://wso2.org/claims/dob",
+ "displayName": "Birth Date"
+ }
+ },
+ {
+ "idpClaim": "link",
+ "localClaim": {
+ "id": "aHR0cDovL3dzbzIub3JnL2NsYWltcy91cmw",
+ "uri": "http://wso2.org/claims/url",
+ "displayName": "URL"
+ }
+ }
+ ],
+ "provisioningClaims": []
+ },
+ "roles": {
+ "mappings": []
+ },
+ "provisioning": {
+ "jit": {
+ "isEnabled": true,
+ "scheme": "PROVISION_SILENTLY",
+ "userstore": "DEFAULT"
+ }
+ },
+ "federatedAuthenticators": {
+ "defaultAuthenticatorId": "RmFjZWJvb2tBdXRoZW50aWNhdG9y",
+ "authenticators": [
+ {
+ "authenticatorId": "RmFjZWJvb2tBdXRoZW50aWNhdG9y",
+ "isEnabled": true,
+ "properties": [
+ {
+ "key": "AuthnEndpoint",
+ "type": "STRING",
+ "displayOrder": 0,
+ "regex": ".*",
+ "isMandatory": false,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "Scope",
+ "displayName": "Scope",
+ "description": "Enter a comma separated list of permissions to request from the user",
+ "type": "STRING",
+ "displayOrder": 3,
+ "regex": ".*",
+ "isMandatory": false,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "email",
+ "subProperties": []
+ },
+ {
+ "key": "UserInfoFields",
+ "displayName": "User Information Fields",
+ "description": "Enter comma-separated user information fields you want to retrieve",
+ "type": "STRING",
+ "displayOrder": 4,
+ "regex": ".*",
+ "isMandatory": false,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "ClientId",
+ "displayName": "Client Id",
+ "description": "Enter Facebook client identifier value",
+ "type": "STRING",
+ "displayOrder": 1,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "UserInfoEndpoint",
+ "type": "STRING",
+ "displayOrder": 0,
+ "regex": ".*",
+ "isMandatory": false,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "AuthTokenEndpoint",
+ "type": "STRING",
+ "displayOrder": 0,
+ "regex": ".*",
+ "isMandatory": false,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "callBackUrl",
+ "displayName": "Callback Url",
+ "description": "Enter value corresponding to callback url",
+ "type": "STRING",
+ "displayOrder": 5,
+ "regex": ".*",
+ "isMandatory": false,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "ClientSecret",
+ "displayName": "Client Secret",
+ "description": "Enter Facebook client secret value",
+ "type": "STRING",
+ "displayOrder": 2,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": true,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "type": "SOCIAL",
+ "templateId": "facebook-idp"
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/github/info.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/github/info.json
new file mode 100755
index 00000000000..16a4319b1f2
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/github/info.json
@@ -0,0 +1,10 @@
+{
+ "id": "github-idp",
+ "name": "GitHub",
+ "description": "Login users with existing GitHub accounts.",
+ "image": "assets/images/logos/github.svg",
+ "category": "DEFAULT",
+ "displayOrder": 4,
+ "tags": [ "Social-Login" ],
+ "type": "identity-provider"
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/github/metadata.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/github/metadata.json
new file mode 100755
index 00000000000..6cb2fb7087e
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/github/metadata.json
@@ -0,0 +1,242 @@
+{
+ "create": {
+ "image": "assets/images/logos/github.svg",
+ "header": "GitHub",
+ "Subheading": "Login users with existing GitHub accounts.",
+ "documentation": "{ ENV }/asgardeo/docs/guides/authentication/social-login/add-github-login/",
+ "modal": {
+ "form": {
+ "fields": [
+ {
+ "index": 0,
+ "ariaLabel": "GitHub IDP Name",
+ "name": "name",
+ "label": "Name",
+ "type": "text",
+ "required": true,
+ "placeholder": "Enter a name for the connection.",
+ "initialValue": "GitHub",
+ "data-testid": "github-idp-create-wizard-content-idp-name",
+ "maxLength": "50",
+ "minLength": "3",
+ "width": "13"
+ },
+ {
+ "index": 1,
+ "ariaLabel": "GitHub Client ID",
+ "type": "text",
+ "name": "clientId",
+ "label": "Client ID",
+ "placeholder": "Enter Client ID from Github application.",
+ "required": true,
+ "autoComplete": true,
+ "data-testid": "github-idp-create-wizard-page-idp-client-id",
+ "maxLength": "100",
+ "minLength": "3",
+ "width": "13"
+ },
+ {
+ "index": 2,
+ "ariaLabel": "GitHub Client Secret",
+ "className": "addon-field-wrapper",
+ "type": "password",
+ "name": "clientSecret",
+ "label": "Client secret",
+ "placeholder": "Enter Client secret from Github application.",
+ "required": true,
+ "autoComplete": true,
+ "data-testid": "github-idp-create-wizard-page-idp-client-secret",
+ "maxLength": "100",
+ "minLength": "3",
+ "width": "13"
+ }
+ ]
+
+ },
+ "wizardHelp": {
+ "message": {
+ "copyInputFields": [
+ {
+ "description": "Use the following URL as the Homepage URL.",
+ "value": "site_url"
+ },
+ {
+ "description": "Add the following URL as the Authorization callback URL.",
+ "value": "redirect_uri"
+ }
+ ],
+ "header": "Prerequites",
+ "paragraphs": [
+ "Before you begin, create an OAuth application on GitHub, and obtain a client ID & secret."
+ ],
+ "link": {
+ "text": "See GitHub's guide on configuring OAuth Apps.",
+ "url": "https://docs.github.com/en/developers/apps/building-oauth-apps/creating-an-oauth-app"
+ }
+ },
+ "fields": [
+ {
+ "fieldName": "Name",
+ "hint": "Provide a unique name for the connection."
+ },
+ {
+ "fieldName": "Client ID",
+ "hint": "Provide the Client ID
you received from GitHub when you registered the OAuth app."
+ },
+ {
+ "fieldName": "Client secret",
+ "hint": "Provide the Client secret
you received from GitHub when you registered the OAuth app."
+ }
+ ]
+ }
+ },
+ "properties": [
+ {
+ "key": "ClientId",
+ "value": ""
+ },
+ {
+ "key": "ClientSecret",
+ "value": ""
+ },
+ {
+ "key": "callbackUrl",
+ "value": "/commonauth"
+ },
+ {
+ "key": "scope",
+ "value": "user:email,read:user"
+ },
+ {
+ "key": "UsePrimaryEmail",
+ "value": "true"
+ }
+ ]
+ },
+ "edit" : {
+ "tabs": {
+ "general" : [
+ {
+ "index": 0,
+ "displayOrder" : 1,
+ "ariaLabel": "name",
+ "inputType": "resource_name",
+ "type": "text",
+ "name": "name",
+ "label": "Name",
+ "required": true ,
+ "message": "Identity Provider name is required",
+ "placeholder": "GitHub",
+ "validation": true,
+ "value": "",
+ "maxLength": "50",
+ "minLength": "3",
+ "data-testid": "idp-edit-page-general-settings-form-idp-name",
+ "hint": "Enter a unique name for this connection.",
+ "readOnly": false
+ },
+ {
+ "index": 1,
+ "displayOrder" : 2,
+ "type": "textarea",
+ "name" : "description",
+ "ariaLabel" : "description",
+ "label" : "Description",
+ "required": false,
+ "placeholder": "Enter a description of the identity provider.",
+ "value": "",
+ "data-testid": "idp-edit-page-general-settings-form-idp-description",
+ "maxLength": "300",
+ "minLength": "3",
+ "hint": "A text description of the identity provider.",
+ "readOnly": false
+ },
+ {
+ "index": 2,
+ "displayOrder" : 3,
+ "name": "jwks_endpoint",
+ "ariaLabel": "JWKS Endpoint URL",
+ "inputType": "url",
+ "type": "text",
+ "label": "JWKS Endpoint URL",
+ "required": true,
+ "placeholder": "https://{ oauth-provider-url }/oauth/jwks",
+ "value": "",
+ "data-testid": "",
+ "maxLength": "2048",
+ "minLength": "10",
+ "hint": "A JSON Web Key (JWK) Set is a JSON object that represents a set of JWKs. The JSON object MUST have a keys member, with its value being an array of JWKs.",
+ "readOnly": false
+ },
+ {
+ "index": 3,
+ "displayOrder" : 4,
+ "type": "certbox",
+ "isJWKSEnabled": "",
+ "isReadOnly": "",
+ "editingIDP": "",
+ "onUpdate": "",
+ "isPEMEnabled": ""
+ }
+ ],
+ "settings" : [
+ {
+ "index": 0,
+ "displayOrder" : 5,
+ "ariaLabel": "GitHub authenticator client ID",
+ "inputType": "default",
+ "name": "ClientId",
+ "label": "Client ID",
+ "placeholder": "Enter Client ID from Github application.",
+ "hint": "The Client ID you received from GitHub for your OAuth app.",
+ "required": true,
+ "readOnly": false,
+ "value": "",
+ "maxLength": "50",
+ "minLength": "3",
+ "width": "16",
+ "data-testid": "idp-edit-page-authenticator-settings-GithubAuthenticator-content-client-id"
+ },
+ {
+ "index": 1,
+ "displayOrder" : 6,
+ "className": "addon-field-wrapper",
+ "ariaLabel": "GitHub authenticator client secret",
+ "inputType": "password",
+ "type": "password",
+ "name": "ClientSecret",
+ "label": "Client secret",
+ "placeholder": "Enter Client secret from Github application.",
+ "hint": "The Client secret you received from GitHub for your OAuth app.",
+ "required": true,
+ "readOnly": false,
+ "value": "",
+ "maxLength": "50",
+ "minLength": "3",
+ "width": "16",
+ "data-testid": "idp-edit-page-authenticator-settings-GithubAuthenticator-content-client-secret"
+ },
+ {
+ "index": 2,
+ "displayOrder" : 7,
+ "type": "text",
+ "ariaLabel": "GitHub authenticator authorized redirect URL",
+ "inputType": "copy_input",
+ "name": "callbackUrl",
+ "label": "Authorization callback URL",
+ "placeholder": "",
+ "hint": "The set of redirect URIs specified as valid in the GitHub for your OAuth app.",
+ "required": "",
+ "value": "",
+ "readOnly": true,
+ "maxLength": "",
+ "minLength": "",
+ "width": "16",
+ "data-testid": "idp-edit-page-authenticator-settings-GithubAuthenticator-content-authorized-redirect-url-wrapper"
+ }
+ ],
+ "quickStart": "github"
+ }
+
+ }
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/github/template.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/github/template.json
new file mode 100755
index 00000000000..8ba1311c9b3
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/github/template.json
@@ -0,0 +1,134 @@
+{
+ "id": "github-idp",
+ "name": "GitHub",
+ "description": "Login users with existing GitHub accounts.",
+ "image": "assets/images/logos/github.svg",
+ "category": "DEFAULT",
+ "displayOrder": 4,
+ "docLink": "/guides/authentication/social-login/add-github-login/",
+ "services": [],
+ "tags": [ "Social-Login" ],
+ "idp": {
+ "name": "GitHub",
+ "description": "",
+ "image": "",
+ "isPrimary": false,
+ "isFederationHub": false,
+ "homeRealmIdentifier": "",
+ "certificate": {
+ "certificates": []
+ },
+ "alias": "https://localhost:9444/oauth2/token",
+ "claims": {
+ "userIdClaim": {
+ "uri": "http://wso2.org/claims/username"
+ },
+ "roleClaim": {
+ "uri": "http://wso2.org/claims/role"
+ },
+ "provisioningClaims": []
+ },
+ "roles": {
+ "mappings": [],
+ "outboundProvisioningRoles": []
+ },
+ "provisioning": {
+ "jit": {
+ "isEnabled": true,
+ "scheme": "PROVISION_SILENTLY",
+ "userstore": "DEFAULT"
+ }
+ },
+ "federatedAuthenticators": {
+ "defaultAuthenticatorId": "R2l0aHViQXV0aGVudGljYXRvcg",
+ "authenticators": [
+ {
+ "authenticatorId": "R2l0aHViQXV0aGVudGljYXRvcg",
+ "isEnabled": true,
+ "properties": [
+ {
+ "key": "AdditionalQueryParameters",
+ "displayName": "Additional Query Parameters",
+ "description": "Additional query parameters. e.g: paramName1=value1",
+ "type": "STRING",
+ "displayOrder": 4,
+ "regex": ".*",
+ "isMandatory": false,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "UsePrimaryEmail",
+ "displayName": "Use Primary Email",
+ "description": "Specifies if primary email is used instead of public email.",
+ "type": "BOOLEAN",
+ "displayOrder": 6,
+ "regex": ".*",
+ "isMandatory": false,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "callbackUrl",
+ "displayName": "Callback URL",
+ "description": "Enter value corresponding to callback url.",
+ "type": "STRING",
+ "displayOrder": 5,
+ "regex": ".*",
+ "isMandatory": false,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "scope",
+ "displayName": "Scope",
+ "description": "Enter scope for the user access",
+ "type": "STRING",
+ "displayOrder": 3,
+ "regex": ".*",
+ "isMandatory": false,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "ClientId",
+ "displayName": "Client Id",
+ "description": "Enter Github IDP client identifier value",
+ "type": "STRING",
+ "displayOrder": 1,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "ClientSecret",
+ "displayName": "Client Secret",
+ "description": "Enter Github IDP client secret value",
+ "type": "STRING",
+ "displayOrder": 2,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": true,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "type": "SOCIAL",
+ "templateId": "github-idp"
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/google/info.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/google/info.json
new file mode 100755
index 00000000000..4b5c47c71f7
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/google/info.json
@@ -0,0 +1,10 @@
+{
+ "id": "google-idp",
+ "name": "Google",
+ "description": "Login users with existing Google accounts.",
+ "image": "assets/images/logos/google.svg",
+ "category": "DEFAULT",
+ "displayOrder": 1,
+ "tags": [ "Social-Login" ],
+ "type": "identity-provider"
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/google/metadata.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/google/metadata.json
new file mode 100755
index 00000000000..762287b2131
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/google/metadata.json
@@ -0,0 +1,287 @@
+{
+ "create": {
+ "image": "assets/images/logos/google.svg",
+ "header": "Google",
+ "Subheading": "Login users with existing Google accounts.",
+ "documentation": "{ ENV }/asgardeo/docs/guides/authentication/social-login/add-google-login/",
+ "modal": {
+ "form": {
+ "fields": [
+ {
+ "index": 0,
+ "ariaLabel": "Google IDP Name",
+ "name": "name",
+ "label": "Name",
+ "type": "text",
+ "required": true,
+ "placeholder": "Enter a name for the connection.",
+ "initialValue": "Google",
+ "data-testid": "google-idp-create-wizard-content-idp-name",
+ "maxLength": "50",
+ "minLength": "3",
+ "width": "13"
+ },
+ {
+ "index": 1,
+ "ariaLabel": "Google Client ID",
+ "type": "text",
+ "name": "clientId",
+ "label": "Client ID",
+ "placeholder": "Enter Client ID from Google application.",
+ "required": true,
+ "autoComplete": true,
+ "data-testid": "google-idp-create-wizard-content-idp-client-id",
+ "maxLength": "100",
+ "minLength": "3",
+ "width": "13"
+ },
+ {
+ "index": 2,
+ "ariaLabel": "Google Client Secret",
+ "className": "addon-field-wrapper",
+ "type": "password",
+ "name": "clientSecret",
+ "label": "Client secret",
+ "placeholder": "Enter Client secret from Google application.",
+ "required": true,
+ "autoComplete": true,
+ "data-testid": "google-idp-create-wizard-content-idp-client-secret",
+ "maxLength": "100",
+ "minLength": "3",
+ "width": "13"
+ }
+ ]
+
+ },
+ "wizardHelp": {
+ "message": {
+ "copyInputFields": [
+ {
+ "description": "Use the following URL as the Authorized Redirect URI.",
+ "value": "redirect_uri"
+ }
+ ],
+ "header": "Prerequites",
+ "paragraphs": [
+ "Before you begin, create an OAuth credential on the Google developer console, and obtain a Client ID & secret." ],
+ "link": {
+ "text": "See Google's guide on configuring OAuth Apps.",
+ "url": "https://support.google.com/googleapi/answer/6158849"
+ }
+ },
+ "fields": [
+ {
+ "fieldName": "Name",
+ "hint": "Provide a unique name for the connection."
+ },
+ {
+ "fieldName": "Client ID",
+ "hint": "Provide the Client ID
you received from Google when you registered the OAuth app."
+ },
+ {
+ "fieldName": "Client secret",
+ "hint": "Provide the Client secret
you received from Google when you registered the OAuth app."
+ }
+ ]
+ }
+ },
+ "properties": [
+ {
+ "key": "ClientId",
+ "value": ""
+ },
+ {
+ "key": "ClientSecret",
+ "value": ""
+ },
+ {
+ "key": "callbackUrl",
+ "value": "/commonauth"
+ },
+ {
+ "key": "AdditionalQueryParameters",
+ "value": "scope=email openid profile"
+ }
+ ]
+ },
+ "edit" : {
+ "tabs": {
+ "general" : [
+ {
+ "index": 0,
+ "displayOrder" : 1,
+ "ariaLabel": "name",
+ "inputType": "resourceName",
+ "name": "name",
+ "label": "Name",
+ "required": true,
+ "message": "Identity Provider name is required",
+ "placeholder": "Google",
+ "validation": true,
+ "value": "",
+ "maxLength": "50",
+ "minLength": "3",
+ "data-testid": "idp-edit-page-general-settings-form-idp-name",
+ "hint": "Enter a unique name for this connection.",
+ "readOnly": false
+ },
+ {
+ "index": 1,
+ "displayOrder" : 2,
+ "type": "textarea",
+ "name" : "description",
+ "ariaLabel" : "description",
+ "label" : "Description",
+ "required": false,
+ "placeholder": "Enter a description of the identity provider.",
+ "value": "",
+ "data-testid": "idp-edit-page-general-settings-form-idp-description",
+ "maxLength": "300",
+ "minLength": "3",
+ "hint": "A text description of the identity provider.",
+ "readOnly": false
+ },
+ {
+ "index": 2,
+ "displayOrder" : 3,
+ "name": "jwks_endpoint",
+ "ariaLabel": "JWKS Endpoint URL",
+ "inputType": "url",
+ "type": "text",
+ "label": "JWKS Endpoint URL",
+ "required": true,
+ "placeholder": "https://{ oauth-provider-url }/oauth/jwks",
+ "value": "",
+ "data-testid": "",
+ "maxLength": "2048",
+ "minLength": "10",
+ "hint": "A JSON Web Key (JWK) Set is a JSON object that represents a set of JWKs. The JSON object MUST have a keys member, with its value being an array of JWKs.",
+ "readOnly": false
+ },
+ {
+ "index": 3,
+ "displayOrder" : 4,
+ "type": "certbox",
+ "isJWKSEnabled": "",
+ "isReadOnly": "",
+ "editingIDP": "",
+ "onUpdate": "",
+ "isPEMEnabled": ""
+ }
+ ],
+ "settings": {
+ "fields": [
+ {
+ "index": 0,
+ "displayOrder" : 5,
+ "ariaLabel": "Google authenticator client ID",
+ "inputType": "clientId",
+ "type": "text",
+ "name": "ClientId",
+ "label": "Client ID",
+ "placeholder": "Enter Client ID from Google application.",
+ "hint": "The Client ID you received from Google for your OAuth app.",
+ "required": true,
+ "readOnly": false,
+ "value": "",
+ "maxLength": "100",
+ "minLength": "3",
+ "width": "16",
+ "data-testid": "idp-edit-page-authenticator-settings-GoogleOIDCAuthenticator-content-client-id"
+
+ },
+ {
+ "index": 1,
+ "displayOrder" : 6,
+ "ariaLabel": "Google authenticator client secret",
+ "className": "addon-field-wrapper",
+ "inputType": "password",
+ "type": "password",
+ "name": "ClientSecret",
+ "label": "Client secret",
+ "placeholder": "Enter Client secret from Google application.",
+ "hint": "The Client secret you received from Google for your OAuth app.",
+ "required": true,
+ "readOnly": false,
+ "value": "",
+ "maxLength": "50",
+ "minLength": "3",
+ "width": "16",
+ "data-testid": "idp-edit-page-authenticator-settings-GoogleOIDCAuthenticator-content-client-secret"
+ },
+ {
+ "index": 2,
+ "displayOrder" : 7,
+ "ariaLabel": "Google authenticator authorized redirect URL",
+ "inputType": "copyInput",
+ "type": "text",
+ "name": "callbackUrl",
+ "label": "Authorized redirect URI",
+ "placeholder": "",
+ "hint": "The authorized redirect URI used to obtain Google credentials.",
+ "required": "",
+ "value": "",
+ "readOnly": true,
+ "maxLength": "",
+ "minLength": "",
+ "width": "16",
+ "data-testid": "idp-edit-page-authenticator-settings-GoogleOIDCAuthenticator-content-authorized-redirect-url-wrapper"
+
+
+ },
+ {
+ "index": 3,
+ "displayOrder" : 8,
+ "ariaLabel": "Google authenticator additional query parameters",
+ "inputType": "queryParamInput",
+ "type": "text",
+ "name": "AdditionalQueryParameters",
+ "label": "Additional Query Parameters",
+ "placeholder": "Enter additional query parameters.",
+ "hint": "Additional query parameters to be sent to Google.",
+ "required": false,
+ "value": "",
+ "readOnly": false,
+ "maxLength": "1000",
+ "minLength": "0",
+ "width": "16",
+ "data-testid": "idp-edit-page-authenticator-settings-GoogleOIDCAuthenticator-content-additional-query-parameters"
+
+ },
+ {
+ "index": 4,
+ "displayOrder" : 9,
+ "type": "toggle",
+ "ariaLabel": "Enable Google One Tap as a sign in option",
+ "name": "IsGoogleOneTapEnabled",
+ "required": false,
+ "toggle": "",
+ "label": "Google One Tap",
+ "placeholder": "Google one tap as a sign in option",
+ "hint": "Enabling Google One Tap as a sign in option",
+ "readOnly": true,
+ "data-testid": "idp-edit-page-authenticator-settings-GoogleOIDCAuthenticator-content-google-one-tap"
+ }
+ ],
+ "scopes": [
+ {
+ "description": "Allows to view user's email address.",
+ "displayName": "email",
+ "icon": "envelope outline"
+ },
+ {
+ "description": "Allows to authenticate using OpenID Connect.",
+ "displayName": "openid",
+ "icon": "openid"
+ },
+ {
+ "description": "Allows to view user's basic profile data.",
+ "displayName": "profile",
+ "icon": "user outline"
+ }
+ ]
+ },
+ "quickStart": "google"
+ }
+ }
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/google/template.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/google/template.json
new file mode 100755
index 00000000000..23250313e41
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/google/template.json
@@ -0,0 +1,95 @@
+{
+ "id": "google-idp",
+ "name": "Google",
+ "description": "Login users with existing Google accounts.",
+ "docLink": "/guides/authentication/social-login/add-google-login/",
+ "image": "assets/images/logos/google.svg",
+ "category": "DEFAULT",
+ "displayOrder": 1,
+ "services": [],
+ "tags": [ "Social-Login" ],
+ "idp": {
+ "name": "Google",
+ "description": "",
+ "image": "",
+ "isPrimary": false,
+ "isFederationHub": false,
+ "homeRealmIdentifier": "",
+ "certificate": {
+ "certificates": []
+ },
+ "alias": "https://localhost:9444/oauth2/token",
+ "claims": {
+ "userIdClaim": {
+ "uri": "http://wso2.org/claims/username"
+ },
+ "roleClaim": {
+ "uri": "http://wso2.org/claims/role"
+ },
+ "provisioningClaims": []
+ },
+ "roles": {
+ "mappings": [],
+ "outboundProvisioningRoles": []
+ },
+ "provisioning": {
+ "jit": {
+ "isEnabled": true,
+ "scheme": "PROVISION_SILENTLY",
+ "userstore": "DEFAULT"
+ }
+ },
+ "federatedAuthenticators": {
+ "defaultAuthenticatorId": "R29vZ2xlT0lEQ0F1dGhlbnRpY2F0b3I",
+ "authenticators": [
+ {
+ "authenticatorId": "R29vZ2xlT0lEQ0F1dGhlbnRpY2F0b3I",
+ "isEnabled": true,
+ "properties": [
+ {
+ "key": "AdditionalQueryParameters",
+ "displayName": "Additional Query Parameters",
+ "description": "Additional query parameters. e.g: paramName1=value1",
+ "type": "STRING",
+ "displayOrder": 4,
+ "regex": ".*",
+ "isMandatory": false,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "ClientId",
+ "displayName": "Client ID",
+ "description": "Enter Google IDP client identifier value",
+ "type": "STRING",
+ "displayOrder": 1,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "ClientSecret",
+ "displayName": "Client secret",
+ "description": "Enter Google IDP client secret value",
+ "type": "STRING",
+ "displayOrder": 2,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": true,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "type": "SOCIAL",
+ "templateId": "google-idp"
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/hypr/info.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/hypr/info.json
new file mode 100755
index 00000000000..8deae2b2569
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/hypr/info.json
@@ -0,0 +1,10 @@
+{
+ "id": "hypr-idp",
+ "name": "HYPR",
+ "description": "Enable login for users with existing HYPR accounts.",
+ "image": "assets/images/logos/hypr.svg",
+ "category": "DEFAULT",
+ "displayOrder": 6,
+ "tags": [ "Social-Login" ],
+ "type": "identity-provider"
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/hypr/metadata.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/hypr/metadata.json
new file mode 100755
index 00000000000..a7117a1551d
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/hypr/metadata.json
@@ -0,0 +1,218 @@
+{
+ "create": {
+ "image": "assets/images/logos/hypr.svg",
+ "header": "HYPR",
+ "Subheading": "Enable login for users with existing HYPR accounts.",
+ "documentation": "{ENV}/asgardeo/docs/guides/authentication/#manage-connections",
+ "modal": {
+ "form": {
+ "fields": [
+ {
+ "index": 0,
+ "ariaLabel": "HYPR IDP Name",
+ "name": "name",
+ "label": "Name",
+ "type": "text",
+ "required": true,
+ "placeholder": "Enter a name for the connection.",
+ "initialValue": "HYPR",
+ "data-testid": "hypr-idp-create-wizard-page-idp-name",
+ "maxLength": "50",
+ "minLength": "3",
+ "width": "13"
+ },
+ {
+ "index": 1,
+ "ariaLabel": "HYPR App ID",
+ "type": "text",
+ "name": "appId",
+ "label": "Relying Party App ID",
+ "placeholder": "Enter App ID from HYPR application.",
+ "required": true,
+ "autoComplete": false,
+ "data-testid": "hypr-idp-create-wizard-page-idp-app-id",
+ "maxLength": "100",
+ "minLength": "3",
+ "width": "13"
+ },
+ {
+ "index": 2,
+ "ariaLabel": "HYPR Base URL",
+ "type": "text",
+ "name": "baseUrl",
+ "label": "Base URL",
+ "placeholder": "Enter HYPR server base URL",
+ "required": true,
+ "autoComplete": false,
+ "data-testid": "hypr-idp-create-wizard-page-idp-base-url",
+ "maxLength": "100",
+ "minLength": "3",
+ "width": "13"
+ },
+ {
+ "index": 3,
+ "className": "addon-field-wrapper",
+ "ariaLabel": "HYPR API Token",
+ "type": "password",
+ "name": "apiToken",
+ "label": "API Token",
+ "placeholder": "Enter API token from HYPR",
+ "required": true,
+ "autoComplete": false,
+ "testId": "hypr-idp-create-wizard-page-idp-api-token",
+ "maxLength": "100",
+ "minLength": "3",
+ "width": "13"
+ }
+ ]
+
+ },
+ "wizardHelp": {
+ "message": {
+ "header": "Prerequites",
+ "paragraphs": [
+ "Before you begin, create a RP application in HYPR control centre, and obtain the application ID.",
+ "You also have to obtain an API Token for the application you have created."
+ ]
+ },
+ "fields": [
+ {
+ "fieldName": "Name",
+ "hint": "Provide a unique name for the connection."
+ },
+ {
+ "fieldName": "App ID",
+ "hint": "Provide the Application ID
of the application registered in the HYPR control center."
+ },
+ {
+ "fieldName": "Base URL",
+ "hint": "Provide the Base URL
of your HYPR server deployment."
+ },
+ {
+ "fieldName": "API Token",
+ "hint": "Provide the API Token
obtained from HYPR. This will be used to access HYPR's APIs."
+ }
+ ]
+ }
+ },
+ "properties": [
+ {
+ "key": "appId",
+ "value": ""
+ },
+ {
+ "key": "apiToken",
+ "value": ""
+ },
+ {
+ "key": "baseUrl",
+ "value": ""
+ }
+ ]
+ },
+ "edit" : {
+ "tabs": {
+ "general" : [
+ {
+ "index": 0,
+ "displayOrder" : 1,
+ "ariaLabel": "name",
+ "inputType": "resource_name",
+ "type": "text",
+ "name": "name",
+ "label": "Name",
+ "required": true ,
+ "message": "Identity Provider name is required",
+ "placeholder": "HYPR",
+ "validation": true,
+ "value": "",
+ "maxLength": "50",
+ "minLength": "3",
+ "data-testid": "idp-edit-page-general-settings-form-idp-name",
+ "hint": "Enter a unique name for this connection.",
+ "readOnly": false
+ },
+ {
+ "index": 1,
+ "displayOrder" : 2,
+ "type": "textarea",
+ "name" : "description",
+ "ariaLabel" : "description",
+ "label" : "Description",
+ "required": false,
+ "placeholder": "Enter a description of the identity provider.",
+ "value": "",
+ "data-testid": "idp-edit-page-general-settings-form-idp-description",
+ "maxLength": "300",
+ "minLength": "3",
+ "hint": "A text description of the identity provider.",
+ "readOnly": false
+ },
+ {
+ "index": 2,
+ "displayOrder" : 3,
+ "name": "jwks_endpoint",
+ "ariaLabel": "JWKS Endpoint URL",
+ "inputType": "url",
+ "type": "text",
+ "label": "JWKS Endpoint URL",
+ "required": true,
+ "placeholder": "https://{ oauth-provider-url }/oauth/jwks",
+ "value": "",
+ "data-testid": "",
+ "maxLength": "2048",
+ "minLength": "10",
+ "hint": "A JSON Web Key (JWK) Set is a JSON object that represents a set of JWKs. The JSON object MUST have a keys member, with its value being an array of JWKs.",
+ "readOnly": false
+ },
+ {
+ "index": 3,
+ "displayOrder" : 4,
+ "type": "certbox",
+ "isJWKSEnabled": "",
+ "isReadOnly": "",
+ "editingIDP": "",
+ "onUpdate": "",
+ "isPEMEnabled": ""
+ }
+ ],
+ "settings" : [
+ {
+ "index": 0,
+ "displayOrder" : 5,
+ "label": "Base URL",
+ "data-testid": "idp-edit-page-authenticator-settings-HYPRAuthenticator-content-form-baseUrl",
+ "name": "baseUrl",
+ "required": true,
+ "type": "text",
+ "hint": "Enter the base URL of your HYPR server deployment.",
+ "validation": true
+ },
+ {
+ "index": 1,
+ "displayOrder" : 6,
+ "label": "Relying Party App ID",
+ "data-testid": "idp-edit-page-authenticator-settings-HYPRAuthenticator-content-form-appId",
+ "name": "appId",
+ "required": true,
+ "type": "text",
+ "hint": "Enter the relying party app ID in HYPR control center.",
+ "validation": false
+ },
+ {
+ "index": 2,
+ "displayOrder" : 7,
+ "label": "API Token",
+ "data-testid": "idp-edit-page-authenticator-settings-HYPRAuthenticator-content-form-apiToken",
+ "name": "apiToken",
+ "required": true,
+ "type": "password",
+ "hint": "Enter the relying party app access token generated in the control center.",
+ "validation": false
+ }
+ ],
+ "quickStart": "hypr"
+ }
+
+ }
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/hypr/template.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/hypr/template.json
new file mode 100755
index 00000000000..a47c45afe90
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/hypr/template.json
@@ -0,0 +1,95 @@
+{
+ "id": "hypr-idp",
+ "name": "HYPR",
+ "description": "Enable login for users with existing HYPR accounts.",
+ "docLink": "/guides/authentication/#manage-connections",
+ "image": "assets/images/logos/hypr.svg",
+ "category": "DEFAULT",
+ "displayOrder": 6,
+ "services": [],
+ "tags": [ "Social-Login" ],
+ "idp": {
+ "name": "HYPR",
+ "description": "",
+ "image": "",
+ "isPrimary": false,
+ "isFederationHub": false,
+ "homeRealmIdentifier": "",
+ "certificate": {
+ "certificates": []
+ },
+ "alias": "https://localhost:9444/oauth2/token",
+ "claims": {
+ "userIdClaim": {
+ "uri": "http://wso2.org/claims/username"
+ },
+ "roleClaim": {
+ "uri": "http://wso2.org/claims/role"
+ },
+ "provisioningClaims": []
+ },
+ "roles": {
+ "mappings": [],
+ "outboundProvisioningRoles": []
+ },
+ "provisioning": {
+ "jit": {
+ "isEnabled": true,
+ "scheme": "PROVISION_SILENTLY",
+ "userstore": "DEFAULT"
+ }
+ },
+ "federatedAuthenticators": {
+ "defaultAuthenticatorId": "SFlQUkF1dGhlbnRpY2F0b3I",
+ "authenticators": [
+ {
+ "authenticatorId": "SFlQUkF1dGhlbnRpY2F0b3I",
+ "isEnabled": true,
+ "properties": [
+ {
+ "key": "appId",
+ "displayName": "Relying Party App ID",
+ "description": "Enter application ID of the application registered in HYPR",
+ "type": "STRING",
+ "displayOrder": 1,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "apiToken",
+ "displayName": "API Token",
+ "description": "Enter API token from HYPR",
+ "type": "STRING",
+ "displayOrder": 3,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": true,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "baseUrl",
+ "displayName": "Base URL",
+ "description": "Enter base URL",
+ "type": "STRING",
+ "displayOrder": 2,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "type": "SOCIAL",
+ "templateId": "hypr-idp"
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/linkedin/info.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/linkedin/info.json
new file mode 100755
index 00000000000..e6c3ae9b2bf
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/linkedin/info.json
@@ -0,0 +1,15 @@
+{
+ "id": "linkedin-idp",
+ "name": "LinkedIn",
+ "description": "Login users with existing LinkedIn accounts.",
+ "docLink": "/guides/authentication/#manage-connections",
+ "image": "assets/images/logos/linkedin.svg",
+ "category": "DEFAULT",
+ "displayOrder": 10,
+ "services": [],
+ "tags": [ "Social-Login" ],
+ "idp": {},
+ "type": "SOCIAL",
+ "templateId": "linkedin-idp",
+ "comingSoon": true
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/microsoft/info.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/microsoft/info.json
new file mode 100755
index 00000000000..dc5353d4aae
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/microsoft/info.json
@@ -0,0 +1,10 @@
+{
+ "id": "microsoft-idp",
+ "name": "Microsoft",
+ "description": "Enable login for users with existing Microsoft accounts.",
+ "image": "assets/images/logos/microsoft.svg",
+ "category": "DEFAULT",
+ "displayOrder": 2,
+ "tags": [ "Social-Login" ],
+ "type": "identity-provider"
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/microsoft/metadata.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/microsoft/metadata.json
new file mode 100755
index 00000000000..280efe8027a
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/microsoft/metadata.json
@@ -0,0 +1,285 @@
+{
+ "create": {
+ "image": "assets/images/logos/microsoft.svg",
+ "header": "Microsoft",
+ "Subheading": "Enable login for users with existing Microsoft accounts",
+ "documentation": "{ ENV }/asgardeo/docs/guides/authentication/social-login/add-microsoft-login/",
+ "modal": {
+ "form": {
+ "fields": [
+ {
+ "index": 0,
+ "ariaLabel": "Microsoft IDP Name",
+ "name": "name",
+ "label": "Name",
+ "type": "text",
+ "required": true,
+ "placeholder": "Enter a name for the connection.",
+ "initialValue": "Microsoft",
+ "data-testid": "microsoft-idp-create-wizard-page-idp-name",
+ "maxLength": "50",
+ "minLength": "3",
+ "width": "13"
+ },
+ {
+ "index": 1,
+ "ariaLabel": "Microsoft Client ID",
+ "type": "text",
+ "name": "clientId",
+ "label": "Client ID",
+ "placeholder": "Enter client ID from Microsoft application.",
+ "required": true,
+ "autoComplete": true,
+ "data-testid": "microsoft-idp-create-wizard-page-idp-client-id",
+ "maxLength": "100",
+ "minLength": "3",
+ "width": "13"
+ },
+ {
+ "index": 2,
+ "ariaLabel": "Microsoft Client Secret",
+ "className": "addon-field-wrapper",
+ "type": "password",
+ "name": "clientSecret",
+ "label": "Client secret",
+ "placeholder": "Enter Client secret from Microsoft application.",
+ "required": true,
+ "autoComplete": true,
+ "data-testid": "microsoft-idp-create-wizard-page-idp-client-secret",
+ "maxLength": "100",
+ "minLength": "3",
+ "width": "13"
+ }
+ ]
+
+ },
+ "wizardHelp": {
+ "message": {
+ "copyInputFields": [
+ {
+ "description": "Use the following URL as the Authorized Redirect URI.",
+ "value": "redirect_uri"
+ }
+ ],
+ "header": "Prerequites",
+ "paragraphs": [
+ "Before you begin, create an OAuth credential on the Azure Active Directory, and obtain a Client ID & secret." ],
+ "link": {
+ "text": "See Microsoft's guide on configuring OAuth Apps.",
+ "url": "https://learn.microsoft.com/en-us/azure/active-directory/saas-apps"
+ }
+ },
+ "fields": [
+ {
+ "fieldName": "Name",
+ "hint": "Provide a unique name for the connection."
+ },
+ {
+ "fieldName": "Client ID",
+ "hint": "Provide the Client ID
you received from Microsoft when you registered the OAuth app."
+ },
+ {
+ "fieldName": "Client secret",
+ "hint": "Provide the Client secret
you received from Microsoft when you registered the OAuth app."
+ }
+ ]
+ }
+ },
+ "properties": [
+ {
+ "key": "ClientId",
+ "value": ""
+ },
+ {
+ "key": "ClientSecret",
+ "value": ""
+ },
+ {
+ "key": "callbackUrl",
+ "value": "/commonauth"
+ },
+ {
+ "key": "Scopes",
+ "value": "email,openid,profile"
+ },
+ {
+ "key": "commonAuthQueryParams",
+ "value": ""
+ },
+ {
+ "key": "UsePrimaryEmail",
+ "value": "true"
+ },
+ {
+ "key": "OAuth2AuthzEPUrl",
+ "value": "https://login.microsoftonline.com/common/oauth2/v2.0/authorize"
+ },
+ {
+ "key" : "OAuth2TokenEPUrl",
+ "value" : "https://login.microsoftonline.com/common/oauth2/v2.0/token"
+ }
+ ]
+ },
+ "edit" : {
+ "tabs": {
+ "general" : [
+
+ {
+ "index": 0,
+ "displayOrder" : 1,
+ "ariaLabel": "name",
+ "inputType": "resource_name",
+ "type": "text",
+ "name": "name",
+ "label": "Name",
+ "required": true ,
+ "message": "Identity Provider name is required",
+ "placeholder": "Microsoft",
+ "validation": true,
+ "value": "",
+ "maxLength": "50",
+ "minLength": "3",
+ "data-testid": "idp-edit-page-general-settings-form-idp-name",
+ "hint": "Enter a unique name for this connection.",
+ "readOnly": false
+ },
+ {
+ "index": 1,
+ "displayOrder" : 2,
+ "type": "textarea",
+ "name" : "description",
+ "ariaLabel" : "description",
+ "label" : "Description",
+ "required": false,
+ "placeholder": "Enter a description of the identity provider.",
+ "value": "",
+ "data-testid": "idp-edit-page-general-settings-form-idp-description",
+ "maxLength": "300",
+ "minLength": "3",
+ "hint": "A text description of the identity provider.",
+ "readOnly": false
+ },
+ {
+ "index": 2,
+ "displayOrder" : 3,
+ "name": "jwks_endpoint",
+ "ariaLabel": "JWKS Endpoint URL",
+ "inputType": "url",
+ "type": "text",
+ "label": "JWKS Endpoint URL",
+ "required": true,
+ "placeholder": "https://{ oauth-provider-url }/oauth/jwks",
+ "value": "",
+ "data-testid": "",
+ "maxLength": "2048",
+ "minLength": "10",
+ "hint": "A JSON Web Key (JWK) Set is a JSON object that represents a set of JWKs. The JSON object MUST have a keys member, with its value being an array of JWKs.",
+ "readOnly": false
+ },
+ {
+ "index": 3,
+ "displayOrder" : 4,
+ "type": "certbox",
+ "isJWKSEnabled": "",
+ "isReadOnly": "",
+ "editingIDP": "",
+ "onUpdate": "",
+ "isPEMEnabled": ""
+ }
+ ],
+ "settings" : [
+ {
+ "index": 0,
+ "displayOrder" : 5,
+ "ariaLabel": "Microsoft authenticator client ID",
+ "inputType": "default",
+ "name": "ClientId",
+ "label": "Client ID",
+ "placeholder": "Enter Client ID from Microsoft application.",
+ "hint": "The Client ID you received from Microsoft for your OAuth app.",
+ "required": true,
+ "readOnly": false,
+ "value": "",
+ "maxLength": "100",
+ "minLength": "3",
+ "width": "16",
+ "data-testid": "idp-edit-page-authenticator-settings-OpenIDConnectAuthenticator-content-client-id"
+ },
+ {
+ "index": 1,
+ "displayOrder" : 6,
+ "ariaLabel": "Microsoft authenticator client secret",
+ "className": "addon-field-wrapper",
+ "inputType": "password",
+ "type": "password",
+ "name": "ClientSecret",
+ "label": "Client secret",
+ "placeholder": "Enter Client secret from Microsoft application.",
+ "hint": "The Client secret you received from Microsoft for your OAuth app.",
+ "required": true,
+ "readOnly": false,
+ "value": "",
+ "maxLength": "50",
+ "minLength": "3",
+ "width": "16",
+ "data-testid": "idp-edit-page-authenticator-settings-OpenIDConnectAuthenticator-content-client-secret"
+ },
+ {
+ "index": 2,
+ "displayOrder" : 7,
+ "ariaLabel": "Microsoft authenticator authorized redirect URL",
+ "inputType": "copy_input",
+ "type": "text",
+ "name": "callbackUrl",
+ "label": "Authorized redirect URI",
+ "placeholder": "",
+ "hint": "The authorized redirect URI used to obtain Microsoft credentials.",
+ "required": "",
+ "value": "",
+ "readOnly": true,
+ "maxLength": "",
+ "minLength": "",
+ "width": "16",
+ "data-testid": "idp-edit-page-authenticator-settings-OpenIDConnectAuthenticator-content-authorized-redirect-url-wrapper"
+ },
+ {
+ "index": 3,
+ "displayOrder" : 8,
+ "field": "Scopes",
+ "ariaLabel": "",
+ "inputType": "default",
+ "name": "",
+ "label":"Scopes",
+ "placeholder": "e.g: openid",
+ "hint": "The types of access provided for the connected apps to access data from Microsoft.",
+ "required": false,
+ "value": "",
+ "readOnly": false,
+ "maxLength": "",
+ "minLength": "",
+ "width": "16",
+ "data-testid": ""
+ },
+ {
+ "index": 4,
+ "displayOrder" : 9,
+ "field": "QueryParams",
+ "ariaLabel": "",
+ "inputType": "default",
+ "name": "commonAuthQueryParams",
+ "label": "Additional Query Parameters",
+ "placeholder": "",
+ "hint": "Additional query parameters to be sent to Microsoft.",
+ "required": "",
+ "value": "",
+ "readOnly": "",
+ "maxLength": "",
+ "minLength": "",
+ "width": "16",
+ "data-testid": ""
+ }
+ ],
+ "quickStart": "microsoft"
+ }
+ }
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/microsoft/template.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/microsoft/template.json
new file mode 100755
index 00000000000..608e24dbe8f
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/microsoft/template.json
@@ -0,0 +1,134 @@
+{
+ "id": "microsoft-idp",
+ "name": "Microsoft",
+ "description": "Enable login for users with existing Microsoft accounts.",
+ "docLink": "/guides/authentication/social-login/add-microsoft-login/",
+ "image": "assets/images/logos/microsoft.svg",
+ "category": "DEFAULT",
+ "displayOrder": 2,
+ "services": [],
+ "tags": [ "Social-Login" ],
+ "idp": {
+ "name": "Microsoft",
+ "description": "",
+ "image": "",
+ "isPrimary": false,
+ "isFederationHub": false,
+ "homeRealmIdentifier": "",
+ "certificate": {
+ "certificates": []
+ },
+ "alias": "https://localhost:9444/oauth2/token",
+ "claims": {
+ "userIdClaim": {
+ "uri": "http://wso2.org/claims/username"
+ },
+ "roleClaim": {
+ "uri": "http://wso2.org/claims/role"
+ },
+ "provisioningClaims": []
+ },
+ "roles": {
+ "mappings": [],
+ "outboundProvisioningRoles": []
+ },
+ "provisioning": {
+ "jit": {
+ "isEnabled": true,
+ "scheme": "PROVISION_SILENTLY",
+ "userstore": "DEFAULT"
+ }
+ },
+ "federatedAuthenticators": {
+ "defaultAuthenticatorId": "",
+ "authenticators": [
+ {
+ "authenticatorId": "T3BlbklEQ29ubmVjdEF1dGhlbnRpY2F0b3I",
+ "isEnabled": true,
+ "properties": [
+ {
+ "key": "commonAuthQueryParams",
+ "displayName": "Additional Query Parameters",
+ "description": "Additional query parameters. e.g: paramName1=value1",
+ "type": "STRING",
+ "displayOrder": 4,
+ "regex": ".*",
+ "isMandatory": false,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "Scopes",
+ "displayName": "Scope",
+ "description": "Enter scope for the user access",
+ "type": "STRING",
+ "displayOrder": 3,
+ "regex": ".*",
+ "isMandatory": false,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "openid",
+ "subProperties": []
+ },
+ {
+ "key": "ClientId",
+ "displayName": "Client ID",
+ "description": "Enter Microsoft IDP client identifier value",
+ "type": "STRING",
+ "displayOrder": 1,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "ClientSecret",
+ "displayName": "Client secret",
+ "description": "Enter Microsoft IDP client secret value",
+ "type": "STRING",
+ "displayOrder": 2,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": true,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "OAuth2AuthzEPUrl",
+ "displayName": "Authorization Endpoint URL",
+ "description": "Authorization Endpoint URL value",
+ "type": "STRING",
+ "displayOrder": 1,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "OAuth2TokenEPUrl",
+ "displayName": "Token Endpoint URL",
+ "description": "Token Endpoint URL value",
+ "type": "STRING",
+ "displayOrder": 1,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "type": "SOCIAL",
+ "templateId": "microsoft-idp"
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/oidc-identity-provider/info.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/oidc-identity-provider/info.json
new file mode 100755
index 00000000000..2e42cdd5af3
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/oidc-identity-provider/info.json
@@ -0,0 +1,10 @@
+{
+ "id": "enterprise-oidc-idp",
+ "name": "OpenID Connect",
+ "description": "Configure a new enterprise identity provider with OpenID Connect",
+ "image": "",
+ "category": "DEFAULT",
+ "displayOrder": -1,
+ "tags": [ "OIDC" ],
+ "type": "identity-provider"
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/oidc-identity-provider/template.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/oidc-identity-provider/template.json
new file mode 100755
index 00000000000..07b35347322
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/oidc-identity-provider/template.json
@@ -0,0 +1,106 @@
+{
+ "category": "DEFAULT",
+ "description": "Configure a new enterprise identity provider with OpenID Connect",
+ "docLink": "/guides/authentication/enterprise-login/",
+ "templateGroup": "enterprise-protocols",
+ "displayOrder": 5,
+ "id": "enterprise-oidc-idp",
+ "tags": [ "OIDC" ],
+ "idp": {
+ "certificate": {},
+ "claims": {
+ "provisioningClaims": [],
+ "roleClaim": {
+ "uri": ""
+ },
+ "userIdClaim": {
+ "uri": ""
+ }
+ },
+ "description": "",
+ "federatedAuthenticators": {
+ "defaultAuthenticatorId": "T3BlbklEQ29ubmVjdEF1dGhlbnRpY2F0b3I",
+ "authenticators": [
+ {
+ "authenticatorId": "T3BlbklEQ29ubmVjdEF1dGhlbnRpY2F0b3I",
+ "isEnabled": true,
+ "properties": [
+ {
+ "key": "ClientId",
+ "displayName": "Client ID",
+ "description": "Enter client identifier value",
+ "type": "STRING",
+ "displayOrder": 1,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "ClientSecret",
+ "displayName": "Client Secret",
+ "description": "Enter client secret value",
+ "type": "STRING",
+ "displayOrder": 2,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": true,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "AuthenticationEndpointUrl",
+ "displayName": "Authorization Endpoint URL",
+ "description": "Authorization Endpoint URL value",
+ "type": "STRING",
+ "displayOrder": 1,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "TokenEndpointUrl",
+ "displayName": "Token Endpoint URL",
+ "description": "Token Endpoint URL value",
+ "type": "STRING",
+ "displayOrder": 1,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ }
+ ]
+ }
+ ]
+ },
+ "homeRealmIdentifier": "",
+ "image": "",
+ "isFederationHub": false,
+ "isPrimary": false,
+ "name": "OIDC Authentication Provider",
+ "provisioning": {
+ "jit": {
+ "isEnabled": true,
+ "scheme": "PROVISION_SILENTLY",
+ "userstore": "DEFAULT"
+ }
+ },
+ "roles": {
+ "mappings": [],
+ "outboundProvisioningRoles": []
+ }
+ },
+ "image": "enterprise",
+ "name": "OpenID Connect",
+ "services": [],
+ "disabled": false,
+ "templateId": "enterprise-oidc-idp"
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/organization-enterprise-identity-provider/info.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/organization-enterprise-identity-provider/info.json
new file mode 100755
index 00000000000..c2d46b88dd4
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/organization-enterprise-identity-provider/info.json
@@ -0,0 +1,11 @@
+{
+ "id": "organization-enterprise-idp",
+ "name": "Organization SSO",
+ "description": "Organization SSO login",
+ "image": "assets/images/logos/organization-sso.svg",
+ "category": "DEFAULT",
+ "displayOrder": 7,
+ "tags": [ "Organization-Login" ],
+ "type": "identity-provider",
+ "templateId": "organization-enterprise-idp"
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/organization-enterprise-identity-provider/template.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/organization-enterprise-identity-provider/template.json
new file mode 100755
index 00000000000..3fb6ad9a26d
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/organization-enterprise-identity-provider/template.json
@@ -0,0 +1,35 @@
+{
+ "id": "organization-enterprise-idp",
+ "name": "Organization SSO",
+ "templateId": "organization-enterprise-idp",
+ "category": "DEFAULT",
+ "description": "Organization SSO login",
+ "displayOrder": 7,
+ "tags": [
+ "Organization-Login"
+ ],
+ "idp": {
+ "name": "Organization IDP",
+ "description": "IdP for Organization SSO",
+ "image": "",
+ "isPrimary": false,
+ "isFederationHub": false,
+ "homeRealmIdentifier": "OrganizationLogin",
+ "alias": "https://localhost:9443/oauth2/token",
+ "federatedAuthenticators": {
+ "defaultAuthenticatorId": "T3JnYW5pemF0aW9uQXV0aGVudGljYXRvcg",
+ "authenticators": [
+ {
+ "authenticatorId": "T3JnYW5pemF0aW9uQXV0aGVudGljYXRvcg",
+ "isEnabled": true,
+ "isDefault": true,
+ "properties": []
+ }
+ ]
+ }
+ },
+ "image": "assets/images/logos/organization-sso.svg",
+ "services": [],
+ "disabled": false,
+ "type": "ENTERPRISE"
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/saml-identity-provider/info.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/saml-identity-provider/info.json
new file mode 100755
index 00000000000..442395b5d69
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/saml-identity-provider/info.json
@@ -0,0 +1,10 @@
+{
+ "id": "enterprise-saml-idp",
+ "name": "",
+ "description": "Configure a new enterprise identity provider with SAML 2.0",
+ "image": "",
+ "category": "DEFAULT",
+ "displayOrder": 7,
+ "tags": [ "SAML" ],
+ "type": "identity-provider"
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/saml-identity-provider/template.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/saml-identity-provider/template.json
new file mode 100755
index 00000000000..3909be4caac
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/saml-identity-provider/template.json
@@ -0,0 +1,152 @@
+{
+ "templateGroup": "enterprise-protocols",
+ "category": "DEFAULT",
+ "description": "Configure a new enterprise identity provider with SAML 2.0",
+ "docLink": "/guides/authentication/enterprise-login/",
+ "displayOrder": 7,
+ "id": "enterprise-saml-idp",
+ "tags": [ "SAML" ],
+ "idp": {
+ "certificate": {},
+ "claims": {
+ "provisioningClaims": [],
+ "roleClaim": {
+ "uri": ""
+ },
+ "userIdClaim": {
+ "uri": ""
+ }
+ },
+ "description": "",
+ "federatedAuthenticators": {
+ "defaultAuthenticatorId": "U0FNTFNTT0F1dGhlbnRpY2F0b3I",
+ "authenticators": [
+ {
+ "authenticatorId": "U0FNTFNTT0F1dGhlbnRpY2F0b3I",
+ "isEnabled": true,
+ "properties": [
+ {
+ "key": "RequestMethod",
+ "displayName": "HTTP Binding",
+ "description": "Choose the HTTP Binding or decide from incoming request",
+ "type": "STRING",
+ "displayOrder": 32,
+ "regex": ".*",
+ "isMandatory": false,
+ "isConfidential": false,
+ "options": [
+ "redirect",
+ "post",
+ "as_request"
+ ],
+ "defaultValue": "redirect",
+ "subProperties": []
+ },
+ {
+ "key": "SSOUrl",
+ "displayName": "SSO URL",
+ "description": "Enter identity provider's SAML2 Web SSO URL value",
+ "type": "STRING",
+ "displayOrder": 6,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "IdPEntityId",
+ "displayName": "Identity Provider Entity ID",
+ "description": "Enter identity provider's entity identifier value. This should be a valid URI/URL.",
+ "type": "STRING",
+ "displayOrder": 5,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "SPEntityId",
+ "displayName": "Service Provider Entity ID",
+ "description": "Enter the service provider's entity identifier value",
+ "type": "STRING",
+ "displayOrder": 1,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "meta_data_saml",
+ "displayName": "SAML Metadata File",
+ "description": "Base-64 encoded metadata file content for SAML configuration",
+ "type": "STRING",
+ "displayOrder": 4,
+ "regex": ".*",
+ "isMandatory": false,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "",
+ "subProperties": []
+ },
+ {
+ "key": "NameIDType",
+ "displayName": "NameID format",
+ "description": "NameID format to be used in the SAML request",
+ "type": "STRING",
+ "displayOrder": 2,
+ "regex": ".*",
+ "isMandatory": true,
+ "isConfidential": false,
+ "options": [],
+ "defaultValue": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified",
+ "subProperties": []
+ },
+ {
+ "key": "selectMode",
+ "displayName": "Select Mode",
+ "description": "Select the input method for SAML configuration",
+ "type": "STRING",
+ "displayOrder": 3,
+ "regex": ".*",
+ "isMandatory": false,
+ "isConfidential": false,
+ "options": [
+ "Manual Configuration",
+ "Metadata File Configuration"
+ ],
+ "defaultValue": "Manual Configuration",
+ "subProperties": []
+ }
+ ]
+ }
+ ]
+ },
+ "homeRealmIdentifier": "",
+ "image": "",
+ "isFederationHub": false,
+ "isPrimary": false,
+ "name": "SAML 2.0 Authentication Provider",
+ "provisioning": {
+ "jit": {
+ "isEnabled": true,
+ "scheme": "PROVISION_SILENTLY",
+ "userstore": "DEFAULT"
+ }
+ },
+ "roles": {
+ "mappings": [],
+ "outboundProvisioningRoles": []
+ }
+ },
+ "image": "enterprise",
+ "name": "SAML 2.0",
+ "services": [],
+ "disabled": false,
+ "templateId": "enterprise-saml-idp"
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/swe/info.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/swe/info.json
new file mode 100755
index 00000000000..0fa49495629
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/swe/info.json
@@ -0,0 +1,10 @@
+{
+ "id": "swe-idp",
+ "name": "Sign In With Ethereum",
+ "description": "Login users with their Ethereum wallet.",
+ "image": "assets/images/logos/ethereum.svg",
+ "category": "DEFAULT",
+ "displayOrder": 9,
+ "tags": [ "OIDC" ],
+ "type": "identity-provider"
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/swe/metadata.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/swe/metadata.json
new file mode 100755
index 00000000000..0f3988df77a
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/swe/metadata.json
@@ -0,0 +1,116 @@
+{
+ "create": {
+ "image": "assets/images/logos/ethereum.svg",
+ "header": "Sign In With Ethereum",
+ "Subheading": "Login users with their Ethereum wallet.",
+ "documentation": "{ ENV }/asgardeo/docs/guides/authentication/social-login/add-google-login/",
+ "modal": {
+ "form": {
+ "fields": [
+ {
+ "index": 0,
+ "name": "name",
+ "ariaLabel": "SIWE IDP Name",
+ "label": "Name",
+ "type": "text",
+ "required": true,
+ "placeholder": "Enter a name for the connection.",
+ "initialValue": "Sign In With Ethereum",
+ "maxLength": "50",
+ "minLength": "3",
+ "data-testid": "swe-idp-create-wizard-content-idp-name",
+ "width": "13"
+ },
+ {
+ "index": 1,
+ "ariaLabel": "SWE Client ID",
+ "type": "text",
+ "name": "clientId",
+ "label": "Client ID",
+ "placeholder": "Enter Client ID of OIDC client.",
+ "required": true,
+ "autoComplete": true,
+ "data-testid": "swe-idp-create-wizard-content-idp-client-id",
+ "maxLength": "100",
+ "minLength": "3",
+ "width": "13"
+ },
+ {
+ "index": 2,
+ "ariaLabel": "SIWE Client Secret",
+ "type": "password",
+ "name": "clientSecret",
+ "label": "Client secret",
+ "placeholder": "Enter Client secret of OIDC client.",
+ "required": true,
+ "autoComplete": true,
+ "data-testid": "swe-idp-create-wizard-content-idp-client-secret",
+ "maxLength": "100",
+ "minLength": "3",
+ "width": "13"
+ }
+ ]
+
+ },
+ "wizardHelp": {
+ "message": {
+ "codeSnippets": [
+ {
+ "description": "If you want to quickly get things started, use the following curl
command to register the client.",
+ "value": "curl -X POST https://oidc.signinwithethereum.org/register -H 'Content-Type: application/json' -d '{\"redirect_uris\": [ \"${redirect_uri}\" ]}'"
+ }
+ ],
+ "copyInputFields": [
+ {
+ "description": "The following URL has to be set as the Redirect URI.",
+ "value": "redirect_uri"
+ }
+ ],
+ "header": "Prerequites",
+ "paragraphs": [
+ "Before you begin, register an OIDC client using the OIDC client registration of oidc.signinwithethereum.org
, and obtain a client ID & secret."
+ ],
+ "link": {
+ "text": "See the guide on registering an OIDC client.",
+ "url": "https://docs.login.xyz/servers/oidc-provider/hosted-oidc-provider#openid-connect-client-registration"
+ }
+ },
+ "fields": [
+ {
+ "fieldName": "Name",
+ "hint": "Provide a unique name for the connection."
+ },
+ {
+ "fieldName": "Client ID",
+ "hint": "Provide the Client ID
you received you received from for your OIDC client."
+ },
+ {
+ "fieldName": "Client secret",
+ "hint": "Provide the Client secret
you received from you received from for your OIDC client."
+ }
+ ]
+ }
+ },
+ "properties": [
+ {
+ "key": "ClientId",
+ "value": ""
+ },
+ {
+ "key": "ClientSecret",
+ "value": ""
+ },
+ {
+ "key": "callbackUrl",
+ "value": "/commonauth"
+ }
+ ]
+ },
+ "edit" : {
+ "tabs": {
+ "general" : [],
+ "settings" : [],
+ "quickStart": "swe"
+ }
+ }
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/swe/template.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/swe/template.json
new file mode 100755
index 00000000000..c1b208918f8
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/swe/template.json
@@ -0,0 +1,72 @@
+{
+ "id": "swe-idp",
+ "name": "Sign In With Ethereum",
+ "description": "Login users with their Ethereum wallet.",
+ "docLink": "/guides/authentication/decentralized-login/sign-in-with-ethereum",
+ "image": "assets/images/logos/ethereum.svg",
+ "category": "DEFAULT",
+ "displayOrder": 9,
+ "services": [],
+ "tags": [ "OIDC" ],
+ "disabled": false,
+ "templateId": "swe-idp",
+ "idp": {
+ "certificate": {
+ "jwksUri": "https://oidc.signinwithethereum.org/jwk"
+ },
+ "claims": {
+ "provisioningClaims": [],
+ "roleClaim": {
+ "uri": ""
+ },
+ "userIdClaim": {
+ "uri": ""
+ }
+ },
+ "description": "",
+ "federatedAuthenticators": {
+ "defaultAuthenticatorId": "T3BlbklEQ29ubmVjdEF1dGhlbnRpY2F0b3I",
+ "authenticators": [
+ {
+ "authenticatorId": "T3BlbklEQ29ubmVjdEF1dGhlbnRpY2F0b3I",
+ "isEnabled": true,
+ "properties": [
+ {
+ "key": "UserInfoUrl",
+ "value": "https://oidc.signinwithethereum.org/userinfo"
+ },
+ {
+ "key": "OAuth2TokenEPUrl",
+ "value": "https://oidc.signinwithethereum.org/token"
+ },
+ {
+ "key": "scope",
+ "value": "openid profile"
+ },
+ {
+ "key": "OAuth2AuthzEPUrl",
+ "value": "https://oidc.signinwithethereum.org/authorize"
+ }
+ ]
+ }
+ ]
+ },
+ "homeRealmIdentifier": "",
+ "image": "",
+ "isFederationHub": false,
+ "isPrimary": false,
+ "name": "Sign In With Ethereum",
+ "provisioning": {
+ "jit": {
+ "isEnabled": false,
+ "scheme": "PROVISION_SILENTLY",
+ "userstore": "DEFAULT"
+ }
+ },
+ "roles": {
+ "mappings": [],
+ "outboundProvisioningRoles": []
+ },
+ "templateId": "swe-idp"
+ }
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/trusted-token-issuer/info.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/trusted-token-issuer/info.json
new file mode 100755
index 00000000000..e6d3e2c9c0e
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/trusted-token-issuer/info.json
@@ -0,0 +1,10 @@
+{
+ "id": "trusted-token-issuer",
+ "name": "Trusted Token Issuer",
+ "description": "A trusted token issuer to exchange its token for an Asgardeo issued token",
+ "image": "assets/images/icons/trusted-token-issuer.svg",
+ "category": "DEFAULT",
+ "displayOrder": 8,
+ "tags": [ "Token-Issuer" ],
+ "type": "identity-provider"
+}
diff --git a/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/trusted-token-issuer/template.json b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/trusted-token-issuer/template.json
new file mode 100755
index 00000000000..9c84b603029
--- /dev/null
+++ b/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/trusted-token-issuer/template.json
@@ -0,0 +1,48 @@
+{
+ "category": "DEFAULT",
+ "description": "A trusted token issuer to exchange its token for an Asgardeo issued token",
+ "docLink": "/guides/authentication/configure-a-trusted-token-issuer/",
+ "displayOrder": 8,
+ "id": "trusted-token-issuer",
+ "tags": [ "Token-Issuer" ],
+ "idp": {
+ "certificate": {},
+ "claims": {
+ "provisioningClaims": [],
+ "roleClaim": {
+ "uri": ""
+ },
+ "userIdClaim": {/Users/wso2/Public/WSO2/sources/asgardeo/backend/carbon-identity-framework/features/extension-mgt/org.wso2.carbon.identity.extension.mgt.feature/resources/extensions/connections/trusted-token-issuer/info.json
+ "uri": ""
+ }
+ },
+ "description": "",
+ "federatedAuthenticators": {
+ "defaultAuthenticatorId": "",
+ "authenticators": []
+ },
+ "homeRealmIdentifier": "",
+ "image": "",
+ "isFederationHub": false,
+ "isPrimary": false,
+ "name": "Trusted Token Issuer",
+ "idpIssuerName": "IDP issuer name",
+ "alias": "Alias",
+ "provisioning": {
+ "jit": {
+ "isEnabled": true,
+ "scheme": "PROVISION_SILENTLY",
+ "userstore": "DEFAULT"
+ }
+ },
+ "roles": {
+ "mappings": [],
+ "outboundProvisioningRoles": []
+ }
+ },
+ "image": "assets/images/icons/trusted-token-issuer.svg",
+ "name": "Trusted Token Issuer",
+ "services": [],
+ "disabled": false,
+ "templateId": "trusted-token-issuer"
+}
diff --git a/features/identity-core/org.wso2.carbon.identity.core.server.feature/resources/identity.xml b/features/identity-core/org.wso2.carbon.identity.core.server.feature/resources/identity.xml
index 11edc28035c..d4be39e8846 100644
--- a/features/identity-core/org.wso2.carbon.identity.core.server.feature/resources/identity.xml
+++ b/features/identity-core/org.wso2.carbon.identity.core.server.feature/resources/identity.xml
@@ -2423,7 +2423,7 @@
- applications,identity-providers
+ applications,connections,identity-providers
diff --git a/features/identity-core/org.wso2.carbon.identity.core.server.feature/resources/org.wso2.carbon.identity.core.server.feature.default.json b/features/identity-core/org.wso2.carbon.identity.core.server.feature/resources/org.wso2.carbon.identity.core.server.feature.default.json
index b80f5eb2ce1..26d53791f92 100644
--- a/features/identity-core/org.wso2.carbon.identity.core.server.feature/resources/org.wso2.carbon.identity.core.server.feature.default.json
+++ b/features/identity-core/org.wso2.carbon.identity.core.server.feature/resources/org.wso2.carbon.identity.core.server.feature.default.json
@@ -968,7 +968,7 @@
"show_pending_user_information.enable": true,
"identity_util.enable_sha256_random_numbers": true,
- "extension_mgt.extension_types": "applications,identity-providers,identity-verification-providers",
+ "extension_mgt.extension_types": "applications,identity-providers,connections,identity-verification-providers",
"identity_datastore.datastore_type": "org.wso2.carbon.identity.governance.store.JDBCIdentityDataStore"
}