diff --git a/.versions b/.versions new file mode 100644 index 0000000..c6cdd96 --- /dev/null +++ b/.versions @@ -0,0 +1,41 @@ +accounts-base@1.2.0 +base64@1.0.3 +binary-heap@1.0.3 +blaze@2.1.2 +blaze-tools@1.0.3 +boilerplate-generator@1.0.3 +callback-hook@1.0.3 +check@1.0.5 +ddp@1.1.0 +deps@1.0.7 +ejson@1.0.6 +geojson-utils@1.0.3 +html-tools@1.0.4 +htmljs@1.0.4 +http@1.1.0 +id-map@1.0.3 +jquery@1.11.3_2 +json@1.0.3 +localstorage@1.0.3 +logging@1.0.7 +meteor@1.1.6 +minifiers@1.1.5 +minimongo@1.0.8 +mongo@1.1.0 +observe-sequence@1.0.6 +ordered-dict@1.0.3 +random@1.0.3 +reactive-var@1.0.5 +retry@1.0.3 +routepolicy@1.0.5 +service-configuration@1.0.4 +spacebars@1.0.6 +spacebars-compiler@1.0.6 +steffo:meteor-accounts-saml@0.0.1 +templating@1.1.1 +tracker@1.0.7 +ui@1.0.6 +underscore@1.0.3 +url@1.0.4 +webapp@1.2.0 +webapp-hashing@1.0.3 diff --git a/openam-example/README.md b/openam-example/README.md new file mode 100644 index 0000000..e12bf4d --- /dev/null +++ b/openam-example/README.md @@ -0,0 +1,33 @@ +#Examples for _steffo:meteor-accounts-saml_ + +There are currently two SAML IDPs supported by the examples. + +- ForgeRock's OpenAM (open-source, can be run locally) +- Feide's OpenIDP (run as a service, free to register) + +### Step 1. Create a Meteor project + +First clone the GitHub project in your local filesystem. From your command line run + +``` +$ meteor create openam +$ cd openam + +``` + +After that, run + +``` +$ cp -rp meteor-accounts-saml/openam-example/* . +$ meteor add accounts-password +$ meteor add accounts-ui +$ meteor add steffo:meteor-accounts-saml +``` + +Make sure that you add/change the user in `server/config.js` and that `initialBoot = true`in the same file. This will create a local Meteor user. + +### Step 2. Make sure that IDP and SP know each other + +The IDP configuration is reflected in the file `server/lib/settings.js`. Basically we only need to know the Login URL (`entryPoint`) and IDP's cert. Optionally, we can use the Single Logout URL. + +The SP configuration can be obtained by accessing eg `http://localhost:3000/_saml/metadata/forgerock` provided you have a SAML provider name `forgerock`in your `settings.js`. In OpenAM, you can create an SP configuration simply by pointing OpenAM to that Metadata URL. \ No newline at end of file diff --git a/openam-example/openam.html b/openam-example/openam.html index c670ea2..df196bd 100644 --- a/openam-example/openam.html +++ b/openam-example/openam.html @@ -1,7 +1,158 @@ - Simple SAML Login with OpenAM - + + + +Examples for _steffo:meteor-accounts-saml_ + + {{>samlDemo}} @@ -27,20 +178,38 @@ Logout (Meteor) {{/if}} -

Step 1

- Create a password based account. - -

Step 2

- Sign out / log out. You should see both the login buttons control 'Sign In' and the custom saml login link 'Log in with OpenIDP' - -

Step 3

- Create OpenIDP account if you don't already have one with same email address as the password account. https://openidp.feide.no/ +

Examples for steffo:meteor-accounts-saml

-

Step 4

- Click the link 'Log in with OpenIDP'. In the pop up window, log in with your OpenIDP credentials. +

There are currently two SAML IDPs supported by the examples.

-

Step 5

- If all goes well, the popup should close by itself. You should now be logged in just as if you had typed in your username and password. + +

Step 1. Create a Meteor project

+ +

First clone the GitHub project in your local filesystem. From your command line run

+ +
$ meteor create openam
+$ cd openam
+
+ +

After that, run

+ +
$ cp -rp meteor-accounts-saml/openam-example/* .
+$ meteor add accounts-password
+$ meteor add accounts-ui
+$ meteor add steffo:meteor-accounts-saml
+
+ +

Make sure that you add/change the user in server/config.js and that initialBoot = truein the same file. This will create a local Meteor user.

+ +

Step 2. Make sure that IDP and SP know each other

+ +

The IDP configuration is reflected in the file server/lib/settings.js. Basically we only need to know the Login URL (entryPoint) and IDP's cert. Optionally, we can use the Single Logout URL.

+ +

The SP configuration can be obtained by accessing eg http://localhost:3000/_saml/metadata/forgerock provided you have a SAML provider name forgerockin your settings.js. In OpenAM, you can create an SP configuration simply by pointing OpenAM to that Metadata URL.

+ \ No newline at end of file diff --git a/openam-example/server/config.js b/openam-example/server/config.js new file mode 100644 index 0000000..cbd5be0 --- /dev/null +++ b/openam-example/server/config.js @@ -0,0 +1,34 @@ +Meteor.startup(function () { + var initialBoot = true; + // Change Fred Fredsen for your Google/OpenAM user + + + var user = Meteor.users.findOne({ + "emails.address": "fred.fredsen@gmail.com" + }); + if (initialBoot && !(user)) { + console.log("Will create new root user - ENABLED. Please change code in config.js, Line 7"); + Accounts.createUser({ + email: "fred.fredsen@gmail.com", + password: "password", + username: "Fred Fredsen", + profile: "" + }); + adminUser = Meteor.users.findOne({ + "emails.address": "fred.fredsen@gmail.com" + }); + } + + + for (i = 0; i < Meteor.settings.saml.length; i++) { + // privateCert is weird name, I know. spCert is better one. Will need to refactor + if (Meteor.settings.saml[i].privateKeyFile && Meteor.settings.saml[i].publicCertFile) { + console.log("Set keys/certs for " + Meteor.settings.saml[i].provider); + Meteor.settings.saml[i].privateCert = Assets.getText(Meteor.settings.saml[i].publicCertFile); + Meteor.settings.saml[i].privateKey = Assets.getText(Meteor.settings.saml[i].privateKeyFile); + } else { + console.log("No keys/certs found for " + Meteor.settings.saml[i].provider); + } + } + +}); \ No newline at end of file diff --git a/openidp-example/server/config.js b/openidp-example/server/config.js index 0184264..cbd5be0 100644 --- a/openidp-example/server/config.js +++ b/openidp-example/server/config.js @@ -1,5 +1,5 @@ Meteor.startup(function () { - var initialBoot = false; + var initialBoot = true; // Change Fred Fredsen for your Google/OpenAM user diff --git a/package.js b/package.js index 72fae76..e9afee9 100644 --- a/package.js +++ b/package.js @@ -1,6 +1,6 @@ Package.describe({ name:"steffo:meteor-accounts-saml", - summary: "SAML Login (SP) for Meteor", + summary: "SAML Login (SP) for Meteor. Works with OpenAM, OpenIDP and provides Single Logout.", version: "0.0.1", git: "https://github.com/steffow/meteor-accounts-saml.git" });