diff --git a/readme.md b/readme.md index 7c692b1..48e5d3c 100644 --- a/readme.md +++ b/readme.md @@ -1,26 +1,28 @@ -AEM 6.1 LDAP Authentication Tutorial -=========================================== +AEM 6.1 External Authentication Tutorial +======================================== -This tutorial goes through the steps to setup and configure a LDAP server and the configure AEM to use example data for authentication. +This tutorial goes through the steps to setup and configure a LDAP server and the configure AEM to use example data for authentication. + +As a bonus track, we show how to build and configure your own identity provider. Sections -------- -1 [Setup Apache Directory Server](tutorial-01-install-ldap.md) -2 [Configure LDAP Authentication in AEM](tutorial-02-configure-aem.md) -3 [Test LDAP Authentication in AEM](tutorial-03-test.md) +1 [Setup Apache Directory Server](step-01/tutorial-01-install-ldap.md) +2 [Configure LDAP Authentication in AEM](step-02/tutorial-02-configure-aem.md) +3 [Test LDAP Authentication in AEM](step-03/tutorial-03-test.md) Bonus ----- -4 [Create your own IDP](tutorial-04-example-idp.md) +4 [Create your own IDP](step-04/tutorial-04-example-idp.md) Resources --------- -* Example ldiff file: [apache-ds-tutorial.ldif](apache-ds-tutorial.ldif) +* Example ldif file: [apache-ds-tutorial.ldif](step-01/apache-ds-tutorial.ldif) * Package with AEM 6.1 LDAP example configurations: - * First config: [ldap-first-config-pkg.zip](ldap-first-config-pkg.zip) - * Config with profile: [ldap-config-with-profile-pkg.zip](ldap-config-with-profile-pkg.zip) + * First config: [ldap-first-config-pkg.zip](step-02/ldap-first-config-pkg.zip) + * Config with profile: [ldap-config-with-profile-pkg.zip](step-03/ldap-config-with-profile-pkg.zip) Links ----- diff --git a/apache-ds-tutorial.ldif b/step-01/apache-ds-tutorial.ldif similarity index 100% rename from apache-ds-tutorial.ldif rename to step-01/apache-ds-tutorial.ldif diff --git a/ldap-00-create-server.png b/step-01/images/ldap-00-create-server.png similarity index 100% rename from ldap-00-create-server.png rename to step-01/images/ldap-00-create-server.png diff --git a/ldap-01-configure-server.png b/step-01/images/ldap-01-configure-server.png similarity index 100% rename from ldap-01-configure-server.png rename to step-01/images/ldap-01-configure-server.png diff --git a/ldap-02-create-partition.png b/step-01/images/ldap-02-create-partition.png similarity index 100% rename from ldap-02-create-partition.png rename to step-01/images/ldap-02-create-partition.png diff --git a/ldap-03-start-server.png b/step-01/images/ldap-03-start-server.png similarity index 100% rename from ldap-03-start-server.png rename to step-01/images/ldap-03-start-server.png diff --git a/ldap-04-create-connection.png b/step-01/images/ldap-04-create-connection.png similarity index 100% rename from ldap-04-create-connection.png rename to step-01/images/ldap-04-create-connection.png diff --git a/ldap-05-import-ldiff.png b/step-01/images/ldap-05-import-ldiff.png similarity index 100% rename from ldap-05-import-ldiff.png rename to step-01/images/ldap-05-import-ldiff.png diff --git a/ldap-06-select-ldiff.png b/step-01/images/ldap-06-select-ldiff.png similarity index 100% rename from ldap-06-select-ldiff.png rename to step-01/images/ldap-06-select-ldiff.png diff --git a/ldap-07-browse-structure.png b/step-01/images/ldap-07-browse-structure.png similarity index 100% rename from ldap-07-browse-structure.png rename to step-01/images/ldap-07-browse-structure.png diff --git a/tutorial-01-install-ldap.md b/step-01/tutorial-01-install-ldap.md similarity index 53% rename from tutorial-01-install-ldap.md rename to step-01/tutorial-01-install-ldap.md index 4c3d3db..a9a0ed0 100644 --- a/tutorial-01-install-ldap.md +++ b/step-01/tutorial-01-install-ldap.md @@ -2,9 +2,9 @@ AEM 6.1 LDAP Authentication Tutorial ==================================== Step 01 - Install Apache Directory Server -------------------------------- +----------------------------------------- -In this step we install Apache Directory Server and Studio, create and configure a new LDAP server and load it with example data. +In this step we install _Apache Directory Server_ and _Apache Directory Studio_, create and configure a new LDAP server and load it with example data. ### Requirements 1. Apache Directory Server @@ -12,15 +12,15 @@ In this step we install Apache Directory Server and Studio, create and configure 2. Example data: http://directory.apache.org/apacheds/basic-ug/resources/apache-ds-tutorial.ldif #### 1. install apache directory server -folow: http://directory.apache.org/apacheds/basic-ug/1.3-installing-and-starting.html +Folow: http://directory.apache.org/apacheds/basic-ug/1.3-installing-and-starting.html #### 2. install apache directory studio -see: http://directory.apache.org/studio/ +See: http://directory.apache.org/studio/ #### 3. create a new server - In directory studio, select the server tab and click the icon for create server. - choose some meaningful name and click finish -![create server](ldap-00-create-server.png) +![create ldap server](images/ldap-00-create-server.png) #### 4. configure server Doubleclick the newly created server to open its configuration. @@ -28,7 +28,7 @@ Doubleclick the newly created server to open its configuration. - disable anonymous access - enable access control -![configure server](ldap-01-configure-server.png) +![configure server](images/ldap-01-configure-server.png) - open _Advanced Partions Configuration_ - delete the _example_ partition @@ -36,41 +36,37 @@ Doubleclick the newly created server to open its configuration. - for id enter: `SevenSeas` - for suffix enter: `o=SevenSeas` -![configure server](ldap-02-create-partition.png) +![create partition](images/ldap-02-create-partition.png) **Save the configuration !!** #### 5. start the server Click on the "Start" in the servers tab -![configure server](ldap-03-start-server.png) +![start server](images/ldap-03-start-server.png) #### 6. create connection +Right click the server and select _Create a Connection_ -right click the server and select _Create a Connection_ +![create connection](images/ldap-04-create-connection.png) -![configure server](ldap-04-create-connection.png) - -#### 7. open connection - -double click on the newly created connection in order to connect to the server. +#### 7. connect to server +Double click on the newly created connection in order to connect to the server. #### 8. import ldif - Import the example data: - right click on the _o=SevenSeas_ node -- select import -> ldiff +- select: _Import_ -> _LDIF Import..._ -![configure server](ldap-05-import-ldiff.png) +![import ldif](images/ldap-05-import-ldiff.png) - choose the `apache-ds-tutorial.ldif` file and click _Finish_ -![configure server](ldap-06-select-ldiff.png) +![ldif import dialog](images/ldap-06-select-ldiff.png) #### 9. browse structure +You can verify the newly imported entries by browsing the structure below the _o=SevenSeas_ node. -you can verify the newly imported entries - -![configure server](ldap-07-browse-structure.png) +![browse seven seas](images/ldap-07-browse-structure.png) diff --git a/aem-00-setup-logging.png b/step-02/images/aem-00-setup-logging.png similarity index 100% rename from aem-00-setup-logging.png rename to step-02/images/aem-00-setup-logging.png diff --git a/aem-01-find-ldap-idp.png b/step-02/images/aem-01-find-ldap-idp.png similarity index 100% rename from aem-01-find-ldap-idp.png rename to step-02/images/aem-01-find-ldap-idp.png diff --git a/aem-02-configure-ldap-idp.png b/step-02/images/aem-02-configure-ldap-idp.png similarity index 100% rename from aem-02-configure-ldap-idp.png rename to step-02/images/aem-02-configure-ldap-idp.png diff --git a/aem-03-find-synchandler.png b/step-02/images/aem-03-find-synchandler.png similarity index 100% rename from aem-03-find-synchandler.png rename to step-02/images/aem-03-find-synchandler.png diff --git a/aem-04-configure-synchandler.png b/step-02/images/aem-04-configure-synchandler.png similarity index 100% rename from aem-04-configure-synchandler.png rename to step-02/images/aem-04-configure-synchandler.png diff --git a/aem-05-find-loginmodule.png b/step-02/images/aem-05-find-loginmodule.png similarity index 100% rename from aem-05-find-loginmodule.png rename to step-02/images/aem-05-find-loginmodule.png diff --git a/aem-06-configure-loginmodule.png b/step-02/images/aem-06-configure-loginmodule.png similarity index 100% rename from aem-06-configure-loginmodule.png rename to step-02/images/aem-06-configure-loginmodule.png diff --git a/aem-07-jaas-console.png b/step-02/images/aem-07-jaas-console.png similarity index 100% rename from aem-07-jaas-console.png rename to step-02/images/aem-07-jaas-console.png diff --git a/ldap-first-config-pkg.zip b/step-02/ldap-first-config-pkg.zip similarity index 100% rename from ldap-first-config-pkg.zip rename to step-02/ldap-first-config-pkg.zip diff --git a/tutorial-02-configure-aem.md b/step-02/tutorial-02-configure-aem.md similarity index 84% rename from tutorial-02-configure-aem.md rename to step-02/tutorial-02-configure-aem.md index b7e6ab4..648e100 100644 --- a/tutorial-02-configure-aem.md +++ b/step-02/tutorial-02-configure-aem.md @@ -6,6 +6,8 @@ Step 02 - Configure LDAP Authentication in AEM In this step we configure AEM 6.1 to use our newly created LDAP server for login. +**!** If you want to fast forward, here's the [ldap-first-config-pkg.zip](ldap-first-config-pkg.zip) package with the resuling configuration of this step. + ### Requirements 1. LDAP Server with example data (preferably from previous step 01) 2. Running vanilla AEM 6.1 installation @@ -16,15 +18,16 @@ It is always advisable to configure LDAP related logging during initial setup. - open [Sling Log Support](http://localhost:4502/system/console/slinglog) in the Felix console - add `org.apache.jackrabbit.oak.spi.security.authentication.external` as category for controlling the logging of the external login module and sync handler - add `org.apache.jackrabbit.oak.security.authentication.ldap` as category for controlling the logging of the LDAP identity provider. +- optionally, add `org.apache.directory` as a category for very lowlevel logging of the ldap client calls. -![image](aem-00-setup-logging.png) +![setup logging](images/aem-00-setup-logging.png) #### 2. configure LDAP identity provider Now we configure the LDAP idp. this is the piece that connects to the LDAP server. - open the [Felix Configuration Manager](http://localhost:4502/system/console/configMgr) and search for the _"ldap identity provider"_ factory config and click on the plus **+** button. -![image](aem-01-find-ldap-idp.png) +![create idp config](images/aem-01-find-ldap-idp.png) Enter the following information: @@ -55,14 +58,14 @@ Enter the following information: And save the config. -![image](aem-02-configure-ldap-idp.png) +![configure ldap idp](images/aem-02-configure-ldap-idp.png) #### 3. configure Default Sync Handler The sync handler is responsible to synchronize the external users with the local repository. - open the [Felix Configuration Manager](http://localhost:4502/system/console/configMgr) and search for the _"Default Sync Handler"_ factory config and click on the plus **+** button. -![image](aem-03-find-synchandler.png) +![create sync config](images/aem-03-find-synchandler.png) Enter the following information: @@ -82,14 +85,14 @@ Enter the following information: And save the config -![image](aem-04-configure-synchandler.png) +![sync config](images/aem-04-configure-synchandler.png) #### 4. configure the external login module The external login module is the bridge between the login, the idp and the sync handler. - open the [Felix Configuration Manager](http://localhost:4502/system/console/configMgr) and search for the _"External Login Module"_ factory config and click on the plus **+** button. -![image](aem-05-find-loginmodule.png) +![create login module](images/aem-05-find-loginmodule.png) Enter the following information: @@ -103,14 +106,14 @@ Enter the following information: And save the config -![image](aem-06-configure-loginmodule.png) +![configure loginmodule](images/aem-06-configure-loginmodule.png) #### 5. verify the JAAS console The external login module should now show up in the JAAS console: - open the [Felix JAAS Console](http://localhost:4502/system/console/jaas) -![image](aem-07-jaas-console.png) +![jaas console](images/aem-07-jaas-console.png) diff --git a/test-01-useradmin.png b/step-03/images/test-01-useradmin.png similarity index 100% rename from test-01-useradmin.png rename to step-03/images/test-01-useradmin.png diff --git a/test-02-newconfig.png b/step-03/images/test-02-newconfig.png similarity index 100% rename from test-02-newconfig.png rename to step-03/images/test-02-newconfig.png diff --git a/test-03-useradmin-withprops.png b/step-03/images/test-03-useradmin-withprops.png similarity index 100% rename from test-03-useradmin-withprops.png rename to step-03/images/test-03-useradmin-withprops.png diff --git a/test-04-jmx-console.png b/step-03/images/test-04-jmx-console.png similarity index 100% rename from test-04-jmx-console.png rename to step-03/images/test-04-jmx-console.png diff --git a/test-05-jmx-synchandler.png b/step-03/images/test-05-jmx-synchandler.png similarity index 100% rename from test-05-jmx-synchandler.png rename to step-03/images/test-05-jmx-synchandler.png diff --git a/test-06-jmx-syncexternalusers.png b/step-03/images/test-06-jmx-syncexternalusers.png similarity index 100% rename from test-06-jmx-syncexternalusers.png rename to step-03/images/test-06-jmx-syncexternalusers.png diff --git a/test-07-useradmin-more.png b/step-03/images/test-07-useradmin-more.png similarity index 100% rename from test-07-useradmin-more.png rename to step-03/images/test-07-useradmin-more.png diff --git a/ldap-config-with-profile-pkg.zip b/step-03/ldap-config-with-profile-pkg.zip similarity index 100% rename from ldap-config-with-profile-pkg.zip rename to step-03/ldap-config-with-profile-pkg.zip diff --git a/log-snip-01.md b/step-03/log-snip-01.md similarity index 100% rename from log-snip-01.md rename to step-03/log-snip-01.md diff --git a/tutorial-03-test.md b/step-03/tutorial-03-test.md similarity index 68% rename from tutorial-03-test.md rename to step-03/tutorial-03-test.md index 46569e6..548ee9f 100644 --- a/tutorial-03-test.md +++ b/step-03/tutorial-03-test.md @@ -6,6 +6,9 @@ Step 03 - Test that it works! In this step we verify that the LDAP authentication works and if the users are synced properly. +**!** If you want to fast forward, here's the [ldap-config-with-profile-pkg.zip](ldap-config-with-profile-pkg.zip) package with the resuling configuration of this step. + + ### Requirements 1. LDAP Server with example data (from step 01) 2. AEM 6.1 installation with configured LDAP authentication (from step 02) @@ -24,14 +27,14 @@ Looking at the users and groups should show the user _William Bush_ and his grou - open the [AEM useradmin](http://localhost:4502/useradmin) - search for `seven` -![image](test-01-useradmin.png) +![useradmin](images/test-01-useradmin.png) -If you look at the log files, you should see something like here: [log-snip-01.md](log-snip-01.md) +If you look at the log files, you should see something like this here: [log-snip-01.md](log-snip-01.md) #### 2. add more config for first- and givenname -as you can see in the AEM user admin, the fields for _First Name_ and _Last Name_ are empty, because the useradmin reads the `profile/givenName` and `profile/familyName`. +As you can see in the AEM user admin, the fields for _First Name_ and _Last Name_ are empty, because the AEM useradmin uses the `profile/givenName` and `profile/familyName` properties. -so let's alter the config so that this information is populated as well. +So let's alter the config so that this information is populated as well. - open the [Felix Configuration Manager](http://localhost:4502/system/console/configMgr) and search for the _"Default Sync Handler"_ factory config and click on the first confg to edit it @@ -46,31 +49,30 @@ Enter the following information: | User Expiration Time | `10s` | User property mapping | `rep:fullname=cn`
`profile/nt:primaryType="nt:unstructured"`
`profile/givenName=givenname`
`profile/familyName=sn` | -![image](test-02-newconfig.png) +![new config](images/test-02-newconfig.png) And save the config. -Now if you logout and login again with `wbush` the user should be resynced. +Now, if you logout and login again with `wbush` the user should be resynced. -![image](test-03-useradmin-withprops.png) +![useradmin](images/test-03-useradmin-withprops.png) #### 3. use JMX console to sync more users - Oak comes with a default JMX mbean that allows you to control the sync handler. - open the [Felix JMX Console](http://localhost:4502/system/console/jmx) and search for the _"External Identity"_ bean and select it -![image](test-04-jmx-console.png) +![jmx console](images/test-04-jmx-console.png) -![image](test-05-jmx-synchandler.png) +![jmx synchandler](images/test-05-jmx-synchandler.png) -- click on `syncAllExternalUsers()` and then on `invoke`. this will collect all the users from the IDP and sync them with the repository. you will see an `add` op property for all newly added users, and an `upd` for the updated ones. +- click on `syncAllExternalUsers()` and then on `invoke`. this will collect all the users from the IDP and sync them with the repository. you will see an `add` _op_ property for all newly added users, and an `upd` for the updated ones. -![image](test-06-jmx-syncexternalusers.png) +![sync users](images/test-06-jmx-syncexternalusers.png) checking back the user admin shows the newly imported users and groups -![image](test-07-useradmin-more.png) +![useradmin](images/test-07-useradmin-more.png) diff --git a/step-04/authorizables.json b/step-04/authorizables.json new file mode 100644 index 0000000..a0fe6de --- /dev/null +++ b/step-04/authorizables.json @@ -0,0 +1,65 @@ +{ + "enterprise": { + "id": "enterprise", + "members": ["kirk", "spock", "mccoy"] + }, + "kirk": { + "id": "kirk", + "fullname": "James T. Kirk", + "givenname": "James T.", + "familyname": "Kirk", + "email": "kirk@seven_skies.example.com", + "password": "pass", + "groups": ["enterprise"] + }, + "spock": { + "id": "spock", + "fullname": "Spock", + "givenname": "Spock", + "familyname": "", + "email": "spock@seven_skies.example.com", + "password": "pass", + "groups": ["enterprise"] + }, + "mccoy": { + "id": "mcccoy", + "fullname": "Leonard McCoy", + "givenname": "Leonard", + "familyname": "McCoy", + "email": "mccoy@seven_skies.example.com", + "password": "pass", + "groups": ["enterprise"] + }, + + "voyager": { + "id": "voyager", + "members": ["janeway", "chakotay", "tuvok"] + }, + "janeway": { + "id": "janeway", + "fullname": "Kathryn Janeway", + "givenname": "Kathryn", + "familyname": "Janeway", + "email": "janeway@seven_skies.example.com", + "password": "pass", + "groups": ["voyager"] + }, + "chakotay": { + "id": "chakotay", + "fullname": "Chakotay", + "givenname": "Chakotay", + "familyname": "", + "email": "chakotay@seven_skies.example.com", + "password": "pass", + "groups": ["voyager"] + }, + "tuvok": { + "id": "tuvok", + "fullname": "Tuvok", + "givenname": "Tuvok", + "familyname": "", + "email": "tuvok@seven_skies.example.com", + "password": "pass", + "groups": ["voyager"] + } +} diff --git a/example-idp/.gitignore b/step-04/example-idp/.gitignore similarity index 100% rename from example-idp/.gitignore rename to step-04/example-idp/.gitignore diff --git a/example-idp/pom.xml b/step-04/example-idp/pom.xml similarity index 100% rename from example-idp/pom.xml rename to step-04/example-idp/pom.xml diff --git a/example-idp/src/main/java/com/adobe/gems/exampleidp/impl/ExternalGroupImpl.java b/step-04/example-idp/src/main/java/com/adobe/gems/exampleidp/impl/ExternalGroupImpl.java similarity index 100% rename from example-idp/src/main/java/com/adobe/gems/exampleidp/impl/ExternalGroupImpl.java rename to step-04/example-idp/src/main/java/com/adobe/gems/exampleidp/impl/ExternalGroupImpl.java diff --git a/example-idp/src/main/java/com/adobe/gems/exampleidp/impl/ExternalIdentityImpl.java b/step-04/example-idp/src/main/java/com/adobe/gems/exampleidp/impl/ExternalIdentityImpl.java similarity index 100% rename from example-idp/src/main/java/com/adobe/gems/exampleidp/impl/ExternalIdentityImpl.java rename to step-04/example-idp/src/main/java/com/adobe/gems/exampleidp/impl/ExternalIdentityImpl.java diff --git a/example-idp/src/main/java/com/adobe/gems/exampleidp/impl/ExternalUserImpl.java b/step-04/example-idp/src/main/java/com/adobe/gems/exampleidp/impl/ExternalUserImpl.java similarity index 100% rename from example-idp/src/main/java/com/adobe/gems/exampleidp/impl/ExternalUserImpl.java rename to step-04/example-idp/src/main/java/com/adobe/gems/exampleidp/impl/ExternalUserImpl.java diff --git a/example-idp/src/main/java/com/adobe/gems/exampleidp/impl/JsonFileIdentityProvider.java b/step-04/example-idp/src/main/java/com/adobe/gems/exampleidp/impl/JsonFileIdentityProvider.java similarity index 100% rename from example-idp/src/main/java/com/adobe/gems/exampleidp/impl/JsonFileIdentityProvider.java rename to step-04/example-idp/src/main/java/com/adobe/gems/exampleidp/impl/JsonFileIdentityProvider.java diff --git a/step-04/images/example-01-find-json-idp.png b/step-04/images/example-01-find-json-idp.png new file mode 100644 index 0000000..dc2c94b Binary files /dev/null and b/step-04/images/example-01-find-json-idp.png differ diff --git a/step-04/images/example-02-configure-idp.png b/step-04/images/example-02-configure-idp.png new file mode 100644 index 0000000..5da385e Binary files /dev/null and b/step-04/images/example-02-configure-idp.png differ diff --git a/step-04/images/example-03-configure-synchandler.png b/step-04/images/example-03-configure-synchandler.png new file mode 100644 index 0000000..bda75d5 Binary files /dev/null and b/step-04/images/example-03-configure-synchandler.png differ diff --git a/step-04/images/example-04-configure-loginmodule.png b/step-04/images/example-04-configure-loginmodule.png new file mode 100644 index 0000000..3039a36 Binary files /dev/null and b/step-04/images/example-04-configure-loginmodule.png differ diff --git a/step-04/images/example-05-useradmin.png b/step-04/images/example-05-useradmin.png new file mode 100644 index 0000000..f08076f Binary files /dev/null and b/step-04/images/example-05-useradmin.png differ diff --git a/step-04/json-idp-config-pkg.zip b/step-04/json-idp-config-pkg.zip new file mode 100644 index 0000000..754965b Binary files /dev/null and b/step-04/json-idp-config-pkg.zip differ diff --git a/tutorial-04-example-idp.md b/step-04/tutorial-04-example-idp.md similarity index 80% rename from tutorial-04-example-idp.md rename to step-04/tutorial-04-example-idp.md index 66b8a1c..23ecc56 100644 --- a/tutorial-04-example-idp.md +++ b/step-04/tutorial-04-example-idp.md @@ -3,10 +3,9 @@ AEM 6.1 Authentication Tutorial Bonus Step 04 - Creating your own IDP ------------------------------- +In this step we show you how to create your own IDP. The IDP provided in this example is very simple as it reads the authorizable data from a JSON file. The sample data in [authorizables.json](authorizables.json) provides the crews of 2 fictivous spaceships. -In this step we show you how to create your own IDP. The IDP provided in this example is very simple as it reads the authorizable data from the JSON file. The sample data in [authorizables.json](authorizables.json) provides the crews of 2 fictivous spaceships. - -the code for the new IDP is located in the [example-idp](example-idp/) directory. The majority of the code is in the [JsonFileIdentityProvider.java](example-idp/src/main/java/com/adobe/gems/exampleidp/impl/JsonFileIdentityProvider.java) class. +The code for the new IDP is located in the [example-idp](example-idp/) directory. The majority of the code is in the [JsonFileIdentityProvider.java](example-idp/src/main/java/com/adobe/gems/exampleidp/impl/JsonFileIdentityProvider.java) class. The code is very simple and should be self explanatory. **!** If you want to fast forward, here's the [json-idp-config-pkg](json-idp-config-pkg) package with the configuration. all you need to do is to build and deploy the bundle. @@ -15,7 +14,6 @@ the code for the new IDP is located in the [example-idp](example-idp/) directory 2. Apache maven #### 1. build the bundle - - open a terminal or command prompt and navigate into the `example-idp` directory. - build and install the bundle with `mvn clean install sling:install` @@ -37,13 +35,14 @@ the output should show something like: ... ```` -#### 2. configure the idp +This will build the bundle and automatically deploy it into an AEM instance running at localhost:4502. -similar to the steps when configuring the ldap idp, we need to create a configuration for our new IDP. +#### 2. configure the identity provider +Similar to the steps when configuring the ldap idp, we need to create a configuration for our new IDP. - open the [Felix Configuration Manager](http://localhost:4502/system/console/configMgr) and search for the _"json file identity provider"_ factory config and click on the plus **+** button. -![image](example-01-find-json-idp.png) +![create json idp](images/example-01-find-json-idp.png) Enter the following information: @@ -52,10 +51,9 @@ Enter the following information: | Provider Name | json | JSON Filename | authorizables.json -![image](example-02-configure-idp.png) +![config json idp](images/example-02-configure-idp.png) #### 3. copy the authorizables json file - As soon as you configure the IDP, you should see a log entry like this: ``` @@ -64,15 +62,12 @@ As soon as you configure the IDP, you should see a log entry like this: as you can see, the file that the IDP needs is relative to where you started AEM. so copy the sample [authorizables.json](authorizables.json) there. - #### 4. configure the sync handler - -similar to the steps when configuring the sync handler for the ldap idp, we need to create a new configuration here as well. - +Similar to the steps when configuring the sync handler for the ldap idp, we need to create a new configuration here as well. - open the [Felix Configuration Manager](http://localhost:4502/system/console/configMgr) and search for the _"Default Sync Handler"_ factory config and click on the plus **+** button. -![image](aem-03-find-synchandler.png) +![find sync handler](../step-02/images/aem-03-find-synchandler.png) Enter the following information: @@ -90,17 +85,16 @@ Enter the following information: | Group property mapping | | Group Path Prefix | `/seven_skies` -And save the config +And save the config. We already add the mappings for the extra profile properties, as we learned in [Step 03](../step-03/tutorial-03-test.md) -![image](example-03-configure-synchandler.png) +![configure synchandler](images/example-03-configure-synchandler.png) #### 5. configure the external login module - As before, the external login module is the bridge between the login, the idp and the sync handler. so add a new configuration that pairs the new `json` idp with the `tutorial_handler` sync handler - open the [Felix Configuration Manager](http://localhost:4502/system/console/configMgr) and search for the _"External Login Module"_ factory config and click on the plus **+** button. -![image](aem-05-find-loginmodule.png) +![create login module](../step-02/images/aem-05-find-loginmodule.png) Enter the following information: @@ -114,23 +108,21 @@ Enter the following information: And save the config -![image](example-04-configure-loginmodule.png) +![configure loginmodule](images/example-04-configure-loginmodule.png) #### 6. test that it works - - ensure to logout previous session or clear all browser cookie or use a different browser, hostname or IP - open browser to aem: http://127.0.0.1:4502/ - login as `kirk` with password `pass` -if the login succeeds, you should now see the authoring environment because we configured the `user.autoMembership` to include the `contributor` group. +If the login succeeds, you should now see the authoring environment because we configured the `user.autoMembership` to include the `contributor` group. Looking at the users and groups should show the group _enterprise_ and his member(s): - open the [AEM useradmin](http://localhost:4502/useradmin) - search for `enterprise` - -![image](example-05-useradmin.png) - - after that, use the JMX console to import the test of the space team! +![useradmin](images/example-05-useradmin.png) +