Skip to content
This repository has been archived by the owner on Dec 12, 2018. It is now read-only.

Commit

Permalink
add MFA options to ID Site url builder
Browse files Browse the repository at this point in the history
  • Loading branch information
Robert committed Nov 11, 2016
1 parent 3229c8f commit 336574d
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 1 deletion.
8 changes: 8 additions & 0 deletions lib/resource/Application.js
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,14 @@ Application.prototype.createIdSiteUrl = function createIdSiteUrl(_options) {
payload.usd = options.useSubDomain;
}

if(Array.isArray(options.require_mfa)){
payload.require_mfa = options.require_mfa;
}

if(Array.isArray(options.challenge)){
payload.challenge = options.challenge;
}

var token = njwt.create(payload,apiKey.secret,'HS256');

var redirectUrl = base + '/sso'+(options.logout?'/logout':'')+'?jwtRequest=' + token;
Expand Down
31 changes: 30 additions & 1 deletion test/it/application_it.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ var common = require('../common');
var helpers = require('./helpers');
var assert = common.assert;
var async = require('async');
var njwt = require('njwt');
var url = require('url');

var CustomData = require('../../lib/resource/CustomData');
var Application = require('../../lib/resource/Application');
Expand All @@ -11,11 +13,12 @@ var OAuthPolicy = require('../../lib/resource/OAuthPolicy');

describe('Application',function(){

var client, app, creationResult, directory, account, mapping;
var client, app, creationResult, directory, account, mapping, signingKey;

before(function(done) {
helpers.getClient(function(_client) {
client = _client;
signingKey = client._dataStore.requestExecutor.options.client.apiKey.secret;

client.createApplication({ name: helpers.uniqId()}, function(err, _app) {
creationResult = [err, _app];
Expand Down Expand Up @@ -362,5 +365,31 @@ describe('Application',function(){
// });
});

describe('createIdSiteUrl', function () {

it('Should add require_mfa option to the JWT', function () {
var options = {
callbackUri: '/stormpathCallback',
require_mfa: ['sms']
};

var redirectUrl = app.createIdSiteUrl(options);
var jwt = njwt.verify(url.parse(redirectUrl,true).query.jwtRequest, signingKey);

assert.deepEqual(jwt.body.require_mfa, options.require_mfa);
});

it('Should add challenge option to the JWT', function () {
var options = {
callbackUri: '/stormpathCallback',
challenge: ['https://api.stormpath.com/v1/factors/:factorId']
};
var redirectUrl = app.createIdSiteUrl(options);

var jwt = njwt.verify(url.parse(redirectUrl,true).query.jwtRequest, signingKey);

assert.deepEqual(jwt.body.challenge, options.challenge);
});
});

});

0 comments on commit 336574d

Please sign in to comment.