@steedos/accounts 2.2.52-beta.4 → 2.2.52-beta.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +2 -5
- package/lib/core/index.js +22 -22
- package/lib/core/index.js.map +1 -1
- package/lib/database-mongo/mongo.js +105 -102
- package/lib/database-mongo/mongo.js.map +1 -1
- package/lib/index.js +11 -23
- package/lib/index.js.map +1 -1
- package/lib/mail.js +5 -5
- package/lib/mail.js.map +1 -1
- package/lib/password/accounts-password.js +54 -41
- package/lib/password/accounts-password.js.map +1 -1
- package/lib/password/index.js +1 -1
- package/lib/password/index.js.map +1 -1
- package/lib/password/utils/encryption.js +3 -3
- package/lib/rest-express/endpoints/authorize.js +2 -2
- package/lib/rest-express/endpoints/get-user.js +2 -2
- package/lib/rest-express/endpoints/impersonate.js +2 -2
- package/lib/rest-express/endpoints/initServer.js +2 -2
- package/lib/rest-express/endpoints/login.js +2 -2
- package/lib/rest-express/endpoints/logout.js +2 -2
- package/lib/rest-express/endpoints/oauth/provider-callback.js +3 -3
- package/lib/rest-express/endpoints/oauth/provider-callback.js.map +1 -1
- package/lib/rest-express/endpoints/password/change-password.js +2 -2
- package/lib/rest-express/endpoints/password/register.js +2 -2
- package/lib/rest-express/endpoints/password/reset.js +4 -4
- package/lib/rest-express/endpoints/password/two-factor.js +6 -6
- package/lib/rest-express/endpoints/password/verify-email.js +6 -6
- package/lib/rest-express/endpoints/password/verify.js +4 -4
- package/lib/rest-express/endpoints/put-user-name.js +2 -2
- package/lib/rest-express/endpoints/refresh-access-token.js +2 -2
- package/lib/rest-express/endpoints/service-authenticate.js +2 -2
- package/lib/rest-express/endpoints/spaces.js +2 -2
- package/lib/rest-express/endpoints/steedos/create-tenant.js +2 -2
- package/lib/rest-express/endpoints/steedos/get-tenant.js +2 -2
- package/lib/rest-express/endpoints/steedos/settings.js +2 -2
- package/lib/rest-express/endpoints/update-session.js +2 -2
- package/lib/rest-express/express-middleware.js +1 -1
- package/lib/rest-express/express-middleware.js.map +1 -1
- package/lib/rest-express/user-loader.js +2 -2
- package/lib/rest-express/utils/steedos-auth.js +2 -2
- package/lib/rest-express/utils/steedos-auth.js.map +1 -1
- package/lib/rest-express/utils/users.js +4 -4
- package/lib/server/accounts-server.js +56 -30
- package/lib/server/accounts-server.js.map +1 -1
- package/lib/server/utils/email.js +2 -2
- package/lib/types/index.js +14 -14
- package/lib/types/index.js.map +1 -1
- package/package.json +12 -16
- package/src/core/index.ts +4 -4
- package/src/database-mongo/mongo.ts +29 -26
- package/src/index.ts +7 -19
- package/src/mail.ts +3 -3
- package/src/password/accounts-password.ts +17 -5
- package/src/server/accounts-server.ts +26 -3
- package/src/server/types/jwt-data.ts +10 -1
- package/src/types/types/connection-informations.ts +9 -0
- package/lib/oauth2/client.js +0 -1
- package/lib/oauth2/client.js.map +0 -1
- package/lib/oauth2/config.js +0 -14
- package/lib/oauth2/config.js.map +0 -1
- package/lib/oauth2/consent.js +0 -192
- package/lib/oauth2/consent.js.map +0 -1
- package/lib/oauth2/login.js +0 -166
- package/lib/oauth2/login.js.map +0 -1
- package/lib/oauth2/logout.js +0 -60
- package/lib/oauth2/logout.js.map +0 -1
- package/lib/oauth2/stub/oidc-cert.js +0 -67
- package/lib/oauth2/stub/oidc-cert.js.map +0 -1
- package/lib/saml-idp/config.js +0 -82
- package/lib/saml-idp/config.js.map +0 -1
- package/lib/saml-idp/connectedApps.js +0 -20
- package/lib/saml-idp/connectedApps.js.map +0 -1
- package/lib/saml-idp/express-middleware.js +0 -684
- package/lib/saml-idp/express-middleware.js.map +0 -1
- package/lib/saml-idp/index.js +0 -13
- package/lib/saml-idp/index.js.map +0 -1
- package/lib/saml-idp/simpleProfileMapper.js +0 -75
- package/lib/saml-idp/simpleProfileMapper.js.map +0 -1
- package/src/oauth2/client.ts +0 -0
- package/src/oauth2/config.ts +0 -15
- package/src/oauth2/consent.ts +0 -208
- package/src/oauth2/login.ts +0 -179
- package/src/oauth2/logout.ts +0 -66
- package/src/oauth2/stub/oidc-cert.ts +0 -86
- package/src/saml-idp/config.js +0 -85
- package/src/saml-idp/connectedApps.ts +0 -16
- package/src/saml-idp/express-middleware.js +0 -811
- package/src/saml-idp/index.ts +0 -14
- package/src/saml-idp/simpleProfileMapper.js +0 -82
- package/src/saml-idp/views/error.hbs +0 -11
- package/src/saml-idp/views/layout.hbs +0 -72
- package/src/saml-idp/views/samlresponse.hbs +0 -20
- package/src/saml-idp/views/settings.hbs +0 -175
- package/src/saml-idp/views/user.hbs +0 -261
- package/views/oauth2/consent.pug +0 -141
package/src/saml-idp/index.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { samlIdp } from './express-middleware';
|
|
2
|
-
import { spawn } from 'child_process';
|
|
3
|
-
const { connectedApps } = require("./connectedApps");
|
|
4
|
-
|
|
5
|
-
const issuer = process.env.ROOT_URL?process.env.ROOT_URL:'http://127.0.0.1:4000/';
|
|
6
|
-
const app = connectedApps["salesforce"];
|
|
7
|
-
|
|
8
|
-
// samlIdp.run({
|
|
9
|
-
// issuer: app.issuer,
|
|
10
|
-
// acsUrl: app.acsUrl,
|
|
11
|
-
// audience: app.audience,
|
|
12
|
-
// });
|
|
13
|
-
|
|
14
|
-
export default samlIdp.expressMiddleware;
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
function SimpleProfileMapper (pu) {
|
|
2
|
-
if(!(this instanceof SimpleProfileMapper)) {
|
|
3
|
-
return new SimpleProfileMapper(pu);
|
|
4
|
-
}
|
|
5
|
-
this._pu = pu;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
SimpleProfileMapper.fromMetadata = function (metadata) {
|
|
9
|
-
function CustomProfileMapper(user) {
|
|
10
|
-
if(!(this instanceof CustomProfileMapper)) {
|
|
11
|
-
return new CustomProfileMapper(user);
|
|
12
|
-
}
|
|
13
|
-
SimpleProfileMapper.call(this, user);
|
|
14
|
-
}
|
|
15
|
-
CustomProfileMapper.prototype = Object.create(SimpleProfileMapper.prototype);
|
|
16
|
-
CustomProfileMapper.prototype.metadata = metadata;
|
|
17
|
-
return CustomProfileMapper;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
SimpleProfileMapper.prototype.getClaims = function() {
|
|
21
|
-
var self = this;
|
|
22
|
-
var claims = {};
|
|
23
|
-
|
|
24
|
-
this.metadata.forEach(function(entry) {
|
|
25
|
-
claims[entry.id] = entry.multiValue ?
|
|
26
|
-
self._pu[entry.id].split(',') :
|
|
27
|
-
self._pu[entry.id];
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
return Object.keys(claims).length && claims;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
SimpleProfileMapper.prototype.getNameIdentifier = function() {
|
|
34
|
-
return {
|
|
35
|
-
nameIdentifier: this._pu.username,
|
|
36
|
-
nameIdentifierFormat: this._pu.nameIdFormat,
|
|
37
|
-
nameIdentifierNameQualifier: this._pu.nameIdNameQualifier,
|
|
38
|
-
nameIdentifierSPNameQualifier: this._pu.nameIdSPNameQualifier,
|
|
39
|
-
nameIdentifierSPProvidedID: this._pu.nameIdSPProvidedID
|
|
40
|
-
};
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
SimpleProfileMapper.prototype.metadata = [ {
|
|
45
|
-
id: "firstName",
|
|
46
|
-
optional: false,
|
|
47
|
-
displayName: 'First Name',
|
|
48
|
-
description: 'The given name of the user',
|
|
49
|
-
multiValue: false
|
|
50
|
-
}, {
|
|
51
|
-
id: "lastName",
|
|
52
|
-
optional: false,
|
|
53
|
-
displayName: 'Last Name',
|
|
54
|
-
description: 'The surname of the user',
|
|
55
|
-
multiValue: false
|
|
56
|
-
}, {
|
|
57
|
-
id: "name",
|
|
58
|
-
optional: true,
|
|
59
|
-
displayName: 'Name',
|
|
60
|
-
description: 'The display name of the user',
|
|
61
|
-
multiValue: false
|
|
62
|
-
}, {
|
|
63
|
-
id: "email",
|
|
64
|
-
optional: false,
|
|
65
|
-
displayName: 'E-Mail Address',
|
|
66
|
-
description: 'The e-mail address of the user',
|
|
67
|
-
multiValue: false
|
|
68
|
-
},{
|
|
69
|
-
id: "mobilePhone",
|
|
70
|
-
optional: true,
|
|
71
|
-
displayName: 'Mobile Phone',
|
|
72
|
-
description: 'The mobile phone of the user',
|
|
73
|
-
multiValue: false
|
|
74
|
-
}, {
|
|
75
|
-
id: "groups",
|
|
76
|
-
optional: true,
|
|
77
|
-
displayName: 'Groups',
|
|
78
|
-
description: 'Group memberships of the user',
|
|
79
|
-
multiValue: true
|
|
80
|
-
}];
|
|
81
|
-
|
|
82
|
-
module.exports = SimpleProfileMapper;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
<div id="container">
|
|
2
|
-
<h1>{{message}}</h1>
|
|
3
|
-
<h2>{{error.status}}</h1>
|
|
4
|
-
<pre>{{error.stack}}</pre>
|
|
5
|
-
<div class="col-md-12 text-right">
|
|
6
|
-
<form action="/" method="get">
|
|
7
|
-
<button id="btn-return" class="btn btn-primary input-xlarge" type="submit"><i class="fa fa-home"><span>Restart</span></i></button>
|
|
8
|
-
</form>
|
|
9
|
-
</div>
|
|
10
|
-
</div>
|
|
11
|
-
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8">
|
|
5
|
-
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
7
|
-
<title>Steedos Identity Provider</title>
|
|
8
|
-
<link href="/dist/fontawesome/css/font-awesome.css" rel="stylesheet">
|
|
9
|
-
<link href="/accounts/a/css/bootstrap.css" rel="stylesheet">
|
|
10
|
-
<link href="/accounts/a/css/main.css" rel="stylesheet">
|
|
11
|
-
<!--[if lt IE 9]>
|
|
12
|
-
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
|
13
|
-
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
|
14
|
-
<![endif]-->
|
|
15
|
-
</head>
|
|
16
|
-
<body>
|
|
17
|
-
<!-- Static navbar -->
|
|
18
|
-
<nav class="navbar navbar-default">
|
|
19
|
-
<div class="container-fluid">
|
|
20
|
-
<div class="navbar-header">
|
|
21
|
-
<a class="navbar-brand" href="/accounts/saml/metadata"><i class="fa fa-key"><span>Steedos SAML Identity Provider ({{idp.issuer}})</span></i></a>
|
|
22
|
-
</div>
|
|
23
|
-
<div id="navbar" class="navbar-collapse collapse">
|
|
24
|
-
<ul class="nav navbar-nav navbar-left">
|
|
25
|
-
<li><a href="/accounts/saml/metadata"><i class="fa fa-file-code-o"><span>IdP Metadata</span></i></a></li>
|
|
26
|
-
</ul>
|
|
27
|
-
<ul class="nav navbar-nav navbar-right">
|
|
28
|
-
<li><a href="/accounts/saml/signout"><i class="fa fa-sign-out"><span>New Session</span></i></a></li>
|
|
29
|
-
<li class="active"><a href="/accounts/saml/settings"><i class="fa fa-cog"><span>Settings</span></i></a></li>
|
|
30
|
-
</ul>
|
|
31
|
-
</div><!--/.nav-collapse -->
|
|
32
|
-
</nav>
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
<div class="container">
|
|
36
|
-
<div class="row">
|
|
37
|
-
{{{body}}}
|
|
38
|
-
</div>
|
|
39
|
-
</div>
|
|
40
|
-
</body>
|
|
41
|
-
|
|
42
|
-
<script src="/dist/jquery/jquery.min.js"></script>
|
|
43
|
-
<script src="/dist/jquery-validation/jquery.validate.min.js"></script>
|
|
44
|
-
<script src="/dist/bootstrap/js/bootstrap.min.js"></script>
|
|
45
|
-
<script src="/dist/bootstrap-tagsinput/bootstrap-tagsinput.min.js"></script>
|
|
46
|
-
<script src="/dist/underscore/underscore.js"></script>
|
|
47
|
-
|
|
48
|
-
<script>
|
|
49
|
-
$(document).ready(function() {
|
|
50
|
-
jQuery.validator.setDefaults({
|
|
51
|
-
errorPlacement: function(error, element) {
|
|
52
|
-
if(element.parent().hasClass('input-prepend') || element.parent().hasClass('input-append')) {
|
|
53
|
-
error.insertAfter(element.parent());
|
|
54
|
-
} else {
|
|
55
|
-
error.insertAfter(element);
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
errorElement: "span",
|
|
59
|
-
errorClass: "help-block",
|
|
60
|
-
highlight: function(element) {
|
|
61
|
-
$(element).closest('.form-group').addClass('has-error');
|
|
62
|
-
},
|
|
63
|
-
success: function(element) {
|
|
64
|
-
$(element).closest('.form-group').removeClass('has-error');
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
</script>
|
|
69
|
-
|
|
70
|
-
{{{block "scripts"}}}
|
|
71
|
-
|
|
72
|
-
</html>
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
<html>
|
|
2
|
-
<head>
|
|
3
|
-
<title>Keep Calm and Single Sign-On!</title>
|
|
4
|
-
</head>
|
|
5
|
-
<body>
|
|
6
|
-
<form method="post" name="hiddenform" action="{{AcsUrl}}">
|
|
7
|
-
<input type="hidden"
|
|
8
|
-
name="SAMLResponse"
|
|
9
|
-
value="{{SAMLResponse}}">
|
|
10
|
-
<input type="hidden" name="RelayState" value="{{RelayState}}">
|
|
11
|
-
<noscript>
|
|
12
|
-
<p>JavaScript is disabled. Click Submit to continue.</p>
|
|
13
|
-
<input type="submit" value="Submit">
|
|
14
|
-
</noscript>
|
|
15
|
-
</form>
|
|
16
|
-
<script language="javascript" type="text/javascript">
|
|
17
|
-
window.setTimeout(function(){document.forms[0].submit();}, 0);
|
|
18
|
-
</script>
|
|
19
|
-
</body>
|
|
20
|
-
</html>
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
<div class="col-md-8 col-md-offset-2">
|
|
2
|
-
<form id="settings" class="form-settings form-horizontal" role="form" method="POST">
|
|
3
|
-
<div class="panel panel-default">
|
|
4
|
-
<div class="panel-heading">
|
|
5
|
-
<h3 class="panel-title">Identity Provider Settings</h3>
|
|
6
|
-
</div>
|
|
7
|
-
<div class="panel-body">
|
|
8
|
-
|
|
9
|
-
<div class="form-group">
|
|
10
|
-
<label for="issuer" class="col-sm-3 control-label">Issuer</label>
|
|
11
|
-
<div class="col-sm-9">
|
|
12
|
-
<input id="issuer" class="form-control" name="issuer" type="text" required="" value="{{idp.issuer}}">
|
|
13
|
-
</div>
|
|
14
|
-
</div>
|
|
15
|
-
|
|
16
|
-
<div class="form-group">
|
|
17
|
-
<label for="signatureAlgorithm" class="col-sm-3 control-label">Signature Algorithm</label>
|
|
18
|
-
<div class="col-sm-9">
|
|
19
|
-
<select id="signatureAlgorithm" class="form-control" name="signatureAlgorithm">
|
|
20
|
-
{{#select idp.signatureAlgorithm}}
|
|
21
|
-
<option value="rsa-sha1">RSA-SHA1</option>
|
|
22
|
-
<option value="rsa-sha256">RSA-SHA256</option>
|
|
23
|
-
{{/select}}
|
|
24
|
-
</select>
|
|
25
|
-
</div>
|
|
26
|
-
</div>
|
|
27
|
-
|
|
28
|
-
<div class="form-group">
|
|
29
|
-
<label for="digestAlgorithm" class="col-sm-3 control-label">Digest Algorithm</label>
|
|
30
|
-
<div class="col-sm-9">
|
|
31
|
-
<select id="digestAlgorithm" class="form-control" name="digestAlgorithm">
|
|
32
|
-
{{#select idp.digestAlgorithm}}
|
|
33
|
-
<option value="sha1">SHA1</option>
|
|
34
|
-
<option value="sha256">SHA256</option>
|
|
35
|
-
{{/select}}
|
|
36
|
-
</select>
|
|
37
|
-
</div>
|
|
38
|
-
</div>
|
|
39
|
-
|
|
40
|
-
<div class="form-group">
|
|
41
|
-
<label for="signResponse" class="col-sm-3 control-label">Sign Response</label>
|
|
42
|
-
<div class="col-sm-9">
|
|
43
|
-
<select id="signResponse" class="form-control" name="signResponse">
|
|
44
|
-
{{#select idp.signResponse}}
|
|
45
|
-
<option value="true">Yes</option>
|
|
46
|
-
<option value="false">No</option>
|
|
47
|
-
{{/select}}
|
|
48
|
-
</select>
|
|
49
|
-
</div>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
<div class="form-group">
|
|
53
|
-
<label for="lifetimeInSeconds" class="col-sm-3 control-label control-label-break">Assertion Lifetime Seconds</label>
|
|
54
|
-
<div class="col-sm-9">
|
|
55
|
-
<input id="lifetimeInSeconds" class="form-control" name="lifetimeInSeconds" type="number" required="" value="{{idp.lifetimeInSeconds}}">
|
|
56
|
-
</div>
|
|
57
|
-
</div>
|
|
58
|
-
|
|
59
|
-
<div class="form-group">
|
|
60
|
-
<label for="authnContextClassRef" class="col-sm-3 control-label control-label-break">Authentication Context Class</label>
|
|
61
|
-
<div class="col-sm-9">
|
|
62
|
-
<select id="authnContextClassRef" class="form-control" name="authnContextClassRef">
|
|
63
|
-
{{#select idp.authnContextClassRef}}
|
|
64
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:InternetProtocol">InternetProtocol</option>
|
|
65
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:InternetProtocolPassword">InternetProtocolPassword</option>
|
|
66
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos">Kerberos</option>
|
|
67
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:MobileOneFactorUnregistered">MobileOneFactorUnregistered</option>
|
|
68
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:MobileTwoFactorUnregistered">MobileTwoFactorUnregistered</option>
|
|
69
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:MobileOneFactorContract">MobileOneFactorContract</option>
|
|
70
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:MobileTwoFactorContract">MobileTwoFactorContract</option>
|
|
71
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:Password">Password</option>
|
|
72
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport">PasswordProtectedTransport</option>
|
|
73
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:PreviousSessionv">PreviousSessionv
|
|
74
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:X509">X509</option>
|
|
75
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:PGP">PGP</option>
|
|
76
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:SPKI">SPKI</option>
|
|
77
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:XMLDSig">XMLDSig</option>
|
|
78
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:Smartcard">Smartcard</option>
|
|
79
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:SmartcardPKI">SmartcardPKI</option>
|
|
80
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:SoftwarePKI">SoftwarePKI</option>
|
|
81
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:Telephony">Telephony</option>
|
|
82
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:NomadTelephony">NomadTelephony</option>
|
|
83
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:PersonalTelephony">PersonalTelephony</option>
|
|
84
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:AuthenticatedTelephony">AuthenticatedTelephony</option>
|
|
85
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:SecureRemotePassword">SecureRemotePassword</option>
|
|
86
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:TLSClient">TLSClient</option>
|
|
87
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:TimeSyncToken">TimeSyncToken</option>
|
|
88
|
-
<option value="urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified">unspecified</option>
|
|
89
|
-
{{/select}}
|
|
90
|
-
</select>
|
|
91
|
-
</div>
|
|
92
|
-
</div>
|
|
93
|
-
|
|
94
|
-
<div class="form-group">
|
|
95
|
-
<label for="allowRequestAcsUrl" class="col-sm-3 control-label control-label-break">Allow Dynamic Assertion Consumer Service URL</label>
|
|
96
|
-
<div class="col-sm-9">
|
|
97
|
-
<select id="allowRequestAcsUrl" class="form-control" name="allowRequestAcsUrl">
|
|
98
|
-
{{#select idp.allowRequestAcsUrl}}
|
|
99
|
-
<option value="true">Yes</option>
|
|
100
|
-
<option value="false">No</option>
|
|
101
|
-
{{/select}}
|
|
102
|
-
</select>
|
|
103
|
-
</div>
|
|
104
|
-
</div>
|
|
105
|
-
|
|
106
|
-
</div>
|
|
107
|
-
</div>
|
|
108
|
-
|
|
109
|
-
<div class="panel panel-default">
|
|
110
|
-
<div class="panel-heading">
|
|
111
|
-
<h3 class="panel-title">Service Provider Settings</h3>
|
|
112
|
-
</div>
|
|
113
|
-
<div class="panel-body">
|
|
114
|
-
|
|
115
|
-
<div class="form-group">
|
|
116
|
-
<label for="serviceProviderId" class="col-sm-3 control-label">Issuer URI</label>
|
|
117
|
-
<div class="col-sm-9">
|
|
118
|
-
<input id="serviceProviderId" class="form-control" name="serviceProviderId" type="text" required="" value="{{idp.serviceProviderId}}">
|
|
119
|
-
</div>
|
|
120
|
-
</div>
|
|
121
|
-
|
|
122
|
-
<div class="form-group">
|
|
123
|
-
<label for="sloUrl" class="col-sm-3 control-label control-label-break">Single Logout Service URL</label>
|
|
124
|
-
<div class="col-sm-9">
|
|
125
|
-
<input id="sloUrl" class="form-control" name="sloUrl" type="url" required="" value="{{idp.sloUrl}}">
|
|
126
|
-
</div>
|
|
127
|
-
</div>
|
|
128
|
-
|
|
129
|
-
<div class="form-group">
|
|
130
|
-
<label for="acsUrl" class="col-sm-3 control-label control-label-break">Assertion Consumer Service URL</label>
|
|
131
|
-
<div class="col-sm-9">
|
|
132
|
-
<input id="acsUrl" class="form-control" name="acsUrl" type="url" required="" value="{{idp.acsUrl}}">
|
|
133
|
-
</div>
|
|
134
|
-
</div>
|
|
135
|
-
|
|
136
|
-
<div class="form-group">
|
|
137
|
-
<label for="destination" class="col-sm-3 control-label">Assertion Consumer Service Destination</label>
|
|
138
|
-
<div class="col-sm-9">
|
|
139
|
-
<input id="destination" class="form-control" name="destination" type="url" required="" value="{{idp.destination}}">
|
|
140
|
-
</div>
|
|
141
|
-
</div>
|
|
142
|
-
|
|
143
|
-
<div class="form-group">
|
|
144
|
-
<label for="recipient" class="col-sm-3 control-label">Assertion Consumer Service Recipient</label>
|
|
145
|
-
<div class="col-sm-9">
|
|
146
|
-
<input id="recipient" class="form-control" name="recipient" type="url" required="" value="{{idp.recipient}}">
|
|
147
|
-
</div>
|
|
148
|
-
</div>
|
|
149
|
-
|
|
150
|
-
<div class="form-group">
|
|
151
|
-
<label for="audience" class="col-sm-3 control-label">Audience URI</label>
|
|
152
|
-
<div class="col-sm-9">
|
|
153
|
-
<input id="audience" class="form-control" name="audience" type="text" required="" value="{{idp.audience}}">
|
|
154
|
-
</div>
|
|
155
|
-
</div>
|
|
156
|
-
|
|
157
|
-
<div class="form-group">
|
|
158
|
-
<label for="relayState" class="col-sm-3 control-label">Default Relay State</label>
|
|
159
|
-
<div class="col-sm-9">
|
|
160
|
-
<input id="relayState" class="form-control" name="RelayState" type="text" value="{{idp.RelayState}}">
|
|
161
|
-
</div>
|
|
162
|
-
</div>
|
|
163
|
-
|
|
164
|
-
</div>
|
|
165
|
-
</div>
|
|
166
|
-
|
|
167
|
-
<div class="form-group">
|
|
168
|
-
<div class="col-md-12 text-right">
|
|
169
|
-
<a href="/accounts/saml/" class="btn btn-default input-xlarge">Cancel</a>
|
|
170
|
-
<button type="submit" class="btn btn-default btn-primary input-xlarge">Save</button>
|
|
171
|
-
</div>
|
|
172
|
-
</div>
|
|
173
|
-
|
|
174
|
-
</form>
|
|
175
|
-
</div>
|
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
{{#if authnRequest.id}}
|
|
2
|
-
<div class="col-md-8 col-md-offset-2">
|
|
3
|
-
<div class="panel panel-primary">
|
|
4
|
-
<div class="panel-heading">
|
|
5
|
-
<a aria-controls="collapse-authn-request" aria-expanded="false" data-toggle="collapse" href="#collapse-authn-request">
|
|
6
|
-
<h3 class="panel-title"><i class="fa fa-code"><span>SAML Authentication Request</span></i> <i aria-hidden="true" class="indicator fa fa-chevron-circle-down pull-right"></i></h3></a>
|
|
7
|
-
</div>
|
|
8
|
-
<div class="panel-body collapse" id="collapse-authn-request">
|
|
9
|
-
<form class="form-horizontal" role="form">
|
|
10
|
-
<div class="form-group">
|
|
11
|
-
<label class="col-sm-3 control-label" for="requestId">Request ID</label>
|
|
12
|
-
<div class="col-sm-9">
|
|
13
|
-
<p class="form-control-static" id="requestId">{{authnRequest.id}}</p>
|
|
14
|
-
</div>
|
|
15
|
-
</div>
|
|
16
|
-
<div class="form-group">
|
|
17
|
-
<label class="col-sm-3 control-label" for="issuer">Issuer</label>
|
|
18
|
-
<div class="col-sm-9">
|
|
19
|
-
<p class="form-control-static" id="issuer">{{authnRequest.issuer}}</p>
|
|
20
|
-
</div>
|
|
21
|
-
</div>
|
|
22
|
-
{{#if authnRequest.destination}}
|
|
23
|
-
<div class="form-group">
|
|
24
|
-
<label class="col-sm-3 control-label" for="destination">Destination</label>
|
|
25
|
-
<div class="col-sm-9">
|
|
26
|
-
<p class="form-control-static" id="destination">{{authnRequest.destination}}</p>
|
|
27
|
-
</div>
|
|
28
|
-
</div>
|
|
29
|
-
{{/if}}
|
|
30
|
-
{{#if authnRequest.acsUrl}}
|
|
31
|
-
<div class="form-group">
|
|
32
|
-
<label class="col-sm-3 control-label" for="acsUrl">ACS URL</label>
|
|
33
|
-
<div class="col-sm-9">
|
|
34
|
-
<p class="form-control-static" id="acsUrl">{{authnRequest.acsUrl}}</p>
|
|
35
|
-
</div>
|
|
36
|
-
</div>
|
|
37
|
-
{{/if}}
|
|
38
|
-
{{#if authnRequest.forceAuthn}}
|
|
39
|
-
<div class="form-group">
|
|
40
|
-
<label class="col-sm-3 control-label" for="forceAuthn">ForceAuthn</label>
|
|
41
|
-
<div class="col-sm-9">
|
|
42
|
-
<p class="form-control-static" id="forceAuthn">{{authnRequest.forceAuthn}}</p>
|
|
43
|
-
</div>
|
|
44
|
-
</div>
|
|
45
|
-
{{/if}}
|
|
46
|
-
{{#if authnRequest.relayState}}
|
|
47
|
-
<div class="form-group">
|
|
48
|
-
<label class="col-sm-3 control-label" for="relayState">Relay State</label>
|
|
49
|
-
<div class="col-sm-9">
|
|
50
|
-
<p class="form-control-static" id="relayState">{{authnRequest.relayState}}</p>
|
|
51
|
-
</div>
|
|
52
|
-
</div>
|
|
53
|
-
{{/if}}
|
|
54
|
-
</form>
|
|
55
|
-
</div>
|
|
56
|
-
</div>
|
|
57
|
-
</div>
|
|
58
|
-
{{/if}}
|
|
59
|
-
|
|
60
|
-
<div class="col-md-8 col-md-offset-2">
|
|
61
|
-
<div class="panel panel-primary">
|
|
62
|
-
<div class="panel-heading">
|
|
63
|
-
<h3 class="panel-title"><i class="fa fa-code"><span>SAML Assertion</span></i></h3>
|
|
64
|
-
</div>
|
|
65
|
-
<div class="panel-body">
|
|
66
|
-
<form action="/accounts/saml/{{paths.SIGN_IN}}" class="form-horizontal form-profile" method="post" role="form">
|
|
67
|
-
<div class='form-profile-attributes'>
|
|
68
|
-
<div class="panel panel-default">
|
|
69
|
-
<div class="panel-heading">
|
|
70
|
-
<h3 class="panel-title"><i class="fa fa-user-o"><span>Subject Statement</span></i></h3>
|
|
71
|
-
</div>
|
|
72
|
-
<div class="panel-body">
|
|
73
|
-
<div class="form-group">
|
|
74
|
-
<label class="col-sm-3 control-label" for="username">Subject NameID</label>
|
|
75
|
-
<div class="col-sm-9">
|
|
76
|
-
<input class="form-control" id="username" name="username" placeholder="user@example.com" required="" value="{{user.username}}">
|
|
77
|
-
<p class="help-block"><a aria-controls="collapseNameId" aria-expanded="false" data-toggle="collapse" href="#collapseNameId"><i class="fa fa-plus"><span>More Options</span></i></a></p>
|
|
78
|
-
</div>
|
|
79
|
-
</div>
|
|
80
|
-
<div class="collapse" id="collapseNameId">
|
|
81
|
-
<div class="form-group">
|
|
82
|
-
<label class="col-sm-3 control-label" for="nameIdFormat">Name ID Format</label>
|
|
83
|
-
<div class="col-sm-9">
|
|
84
|
-
<select class="form-control" id="nameIdFormat" name="nameIdFormat">
|
|
85
|
-
<option>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</option>
|
|
86
|
-
<option>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</option>
|
|
87
|
-
<option>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent</option>
|
|
88
|
-
<option>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</option>
|
|
89
|
-
<option>urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName</option>
|
|
90
|
-
<option>urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName</option>
|
|
91
|
-
<option>urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos</option>
|
|
92
|
-
</select>
|
|
93
|
-
</div>
|
|
94
|
-
</div>
|
|
95
|
-
<div class="form-group">
|
|
96
|
-
<label class="col-md-3 control-label" for="nameIdNameQualifier">Name Qualifier</label>
|
|
97
|
-
<div class="col-sm-9">
|
|
98
|
-
<input class="form-control" id="nameIdNameQualifier" name="nameIdNameQualifier" type="text" value="{{user.nameIdNameQualifier}}">
|
|
99
|
-
</div>
|
|
100
|
-
</div>
|
|
101
|
-
<div class="form-group">
|
|
102
|
-
<label class="col-md-3 control-label" for="nameIdSPNameQualifier">Service Provider Name Qualifier</label>
|
|
103
|
-
<div class="col-sm-9">
|
|
104
|
-
<input class="form-control" id="nameIdSPNameQualifier" name="nameIdSPNameQualifier" type="text" value="{{user.nameIdSPNameQualifier}}">
|
|
105
|
-
</div>
|
|
106
|
-
</div>
|
|
107
|
-
<div class="form-group">
|
|
108
|
-
<label class="col-md-3 control-label" for="nameIdSPProvidedID">Service Provider Provided ID</label>
|
|
109
|
-
<div class="col-sm-9">
|
|
110
|
-
<input class="form-control" id="nameIdSPProvidedID" name="nameIdSPProvidedID" type="text" value="{{user.nameIdSPProvidedID}}">
|
|
111
|
-
</div>
|
|
112
|
-
</div>
|
|
113
|
-
</div>
|
|
114
|
-
</div>
|
|
115
|
-
</div>
|
|
116
|
-
<div class="panel panel-default">
|
|
117
|
-
<div class="panel-heading">
|
|
118
|
-
<a aria-controls="collapse-authn-request" aria-expanded="false" data-toggle="collapse" href="#collapse-authn-statement">
|
|
119
|
-
<h3 class="panel-title"><i class="fa fa-lock"><span>Authentication Statement</span></i> <i aria-hidden="true" class="indicator fa fa-chevron-circle-down pull-right"></i></h3></a>
|
|
120
|
-
</div>
|
|
121
|
-
<div class="panel-body collapse" id="collapse-authn-statement">
|
|
122
|
-
<div class="form-group">
|
|
123
|
-
<label class="col-sm-3 control-label" for="sessionIndex">Session Index</label>
|
|
124
|
-
<div class="col-sm-9">
|
|
125
|
-
<p class="form-control-static" id="sessionIndex">{{participant.sessionIndex}}</p>
|
|
126
|
-
</div>
|
|
127
|
-
</div>
|
|
128
|
-
<div class="form-group">
|
|
129
|
-
<label class="col-sm-3 control-label" for="authnContextClassRef">Authentication Context Class</label>
|
|
130
|
-
<div class="col-sm-9">
|
|
131
|
-
<p class="form-control-static" id="authnContextClassRef">{{idp.authnContextClassRef}}</p>
|
|
132
|
-
</div>
|
|
133
|
-
</div>
|
|
134
|
-
</div>
|
|
135
|
-
</div>
|
|
136
|
-
<div class="panel panel-default">
|
|
137
|
-
<div class="panel-heading">
|
|
138
|
-
<h3 class="panel-title"><i class="fa fa-id-card-o"><span>Attribute Statements</span></i></h3>
|
|
139
|
-
</div>
|
|
140
|
-
<div class="panel-body">
|
|
141
|
-
{{#each metadata}}
|
|
142
|
-
<div class="form-group">
|
|
143
|
-
<label class="col-sm-3 control-label" for="{{this.id}}">{{this.displayName}}</label>
|
|
144
|
-
<div class="col-sm-9">
|
|
145
|
-
{{#if this.options}}
|
|
146
|
-
<select class="form-control" id="{{this.id}}" name="{{this.id}}">
|
|
147
|
-
{{#each this.options}}
|
|
148
|
-
<option>
|
|
149
|
-
{{this}}
|
|
150
|
-
</option>
|
|
151
|
-
{{/each}}
|
|
152
|
-
</select>
|
|
153
|
-
{{else}}
|
|
154
|
-
{{#if this.multiValue}}
|
|
155
|
-
<input class="form-control" id="{{this.id}}" name="{{this.id}}" placeholder="Attribute value" type="text" value="{{getProperty this.id ../user}}" data-role="tagsinput">
|
|
156
|
-
{{else}}
|
|
157
|
-
<input class="form-control" id="{{this.id}}" name="{{this.id}}" placeholder="Attribute value" type="text" value="{{getProperty this.id ../user}}">
|
|
158
|
-
{{/if}}
|
|
159
|
-
{{/if}}
|
|
160
|
-
</div>
|
|
161
|
-
</div>
|
|
162
|
-
{{/each}}
|
|
163
|
-
</div>
|
|
164
|
-
</div>
|
|
165
|
-
<div class="form-group">
|
|
166
|
-
<div class="col-md-12 text-right">
|
|
167
|
-
<button id="btn-show-attribute-modal" class="btn btn-default input-xlarge"><i class="fa fa-plus-circle"><span>Add attribute</span></i></button>
|
|
168
|
-
<button id="btn-sign-out" class="btn btn-default input-xlarge"><i class="fa fa-sign-out"><span>Sign out</span></i></button>
|
|
169
|
-
<button id="btn-sign-in" class="btn btn-primary input-xlarge" type="submit"><i class="fa fa-sign-in"><span>Sign in</span></i></button>
|
|
170
|
-
</div>
|
|
171
|
-
</div>{{#if authnRequest.id}} <input name="_authnRequest" type='hidden' value='{{serialize authnRequest}}'> {{/if}}
|
|
172
|
-
</div>
|
|
173
|
-
</form>
|
|
174
|
-
</div><!-- /.form-profile-attributes -->
|
|
175
|
-
</div>
|
|
176
|
-
</div>
|
|
177
|
-
<div class="modal fade" id="modal-attribute">
|
|
178
|
-
<div class="modal-dialog">
|
|
179
|
-
<div class="modal-content">
|
|
180
|
-
<div class="modal-header">
|
|
181
|
-
<button aria-label="Close" class="close" data-dismiss="modal" type="button"><span aria-hidden="true">×</span></button>
|
|
182
|
-
<h4 class="modal-title">Add Attribute</h4>
|
|
183
|
-
</div>
|
|
184
|
-
<div class="modal-body">
|
|
185
|
-
<form class="form-horizontal" role="form">
|
|
186
|
-
<div class="form-group">
|
|
187
|
-
<label class="col-md-3 control-label" for="attributeName">SAML Attribute Name</label>
|
|
188
|
-
<div class="col-sm-9">
|
|
189
|
-
<input class="form-control" name="attributeName" required="" type="text">
|
|
190
|
-
</div>
|
|
191
|
-
</div>
|
|
192
|
-
<div class="form-group">
|
|
193
|
-
<label class="col-md-3 control-label" for="name">Name</label>
|
|
194
|
-
<div class="col-sm-9">
|
|
195
|
-
<input class="form-control" name="name" required="" type="text">
|
|
196
|
-
</div>
|
|
197
|
-
</div>
|
|
198
|
-
<div class="form-group">
|
|
199
|
-
<label class="col-md-3 control-label" for="description">Description</label>
|
|
200
|
-
<div class="col-sm-9">
|
|
201
|
-
<input class="form-control" name="description" type="text">
|
|
202
|
-
</div>
|
|
203
|
-
</div>
|
|
204
|
-
<div class="form-group">
|
|
205
|
-
<label class="col-md-3 control-label" for="attributeValueOption">Attribute Value</label>
|
|
206
|
-
<div class="col-sm-9">
|
|
207
|
-
<label class="radio-inline"><input checked name="valueType" type="radio" value="single">Single Value</label> <label class="radio-inline"><input name="valueType" type="radio" value="multi">Multi-Value</label>
|
|
208
|
-
</div>
|
|
209
|
-
</div>
|
|
210
|
-
</form>
|
|
211
|
-
</div>
|
|
212
|
-
<div class="modal-footer">
|
|
213
|
-
<button class="btn btn-default" data-dismiss="modal" type="button">Close</button> <button class="btn btn-primary" type="button">Add attribute</button>
|
|
214
|
-
</div>
|
|
215
|
-
</div><!-- /.modal-content -->
|
|
216
|
-
</div><!-- /.modal-dialog -->
|
|
217
|
-
</div><!-- /.modal -->
|
|
218
|
-
|
|
219
|
-
{{#extend "scripts"}}
|
|
220
|
-
<script>
|
|
221
|
-
$(document).ready(function() {
|
|
222
|
-
$("#nameIdFormat option").filter(function() {
|
|
223
|
-
return $(this).text() == '{{user.nameIdFormat}}';
|
|
224
|
-
}).prop('selected', true);
|
|
225
|
-
|
|
226
|
-
$('#btn-show-attribute-modal').click(function(e) {
|
|
227
|
-
e.preventDefault();
|
|
228
|
-
var $modal = $('#modal-attribute');
|
|
229
|
-
$modal.find('input[type=text]').val('');
|
|
230
|
-
$modal.modal('show');
|
|
231
|
-
});
|
|
232
|
-
|
|
233
|
-
$('#btn-sign-out').click(function(e) {
|
|
234
|
-
e.preventDefault();
|
|
235
|
-
window.location.href = '/accounts/saml/{{paths.SIGN_OUT}}';
|
|
236
|
-
});
|
|
237
|
-
|
|
238
|
-
$('#modal-attribute .btn-primary').click(function(e) {
|
|
239
|
-
e.preventDefault();
|
|
240
|
-
var $form = $("#modal-attribute form");
|
|
241
|
-
$form.validate();
|
|
242
|
-
if ($form.valid()) {
|
|
243
|
-
$.ajax({
|
|
244
|
-
type: "POST",
|
|
245
|
-
url: '/accounts/saml/{{paths.METADATA}}',
|
|
246
|
-
data: $("#modal-attribute form").serialize(),
|
|
247
|
-
success: function() {
|
|
248
|
-
$('#modal-attribute').modal('hide');
|
|
249
|
-
window.location.reload();
|
|
250
|
-
},error: function(xhr, textStatus, errorMessage) {
|
|
251
|
-
console.log(errorMessage);
|
|
252
|
-
}
|
|
253
|
-
});
|
|
254
|
-
}
|
|
255
|
-
})
|
|
256
|
-
|
|
257
|
-
$('a[data-toggle=collapse]').click(function() {
|
|
258
|
-
$(this).find('i.indicator').toggleClass('fa-chevron-circle-down fa-chevron-circle-up');
|
|
259
|
-
});
|
|
260
|
-
});
|
|
261
|
-
</script>{{/extend}}
|