Merge pull request #2587 from moses-palmer/feature-token-as-vendor-property

OAuth2 access token name as vendor property
This commit is contained in:
Tony Tam
2017-01-02 13:43:32 -07:00
committed by GitHub
2 changed files with 32 additions and 10 deletions

View File

@@ -122,6 +122,17 @@ function handleLogin() {
//(needs to be aware of schemes to do so correctly) //(needs to be aware of schemes to do so correctly)
window.enabledScopes=scopes; window.enabledScopes=scopes;
/**
* Returns the name of the access token parameter returned by the server.
*
* @param dets
* The authorisation scheme configuration.
* @return the name of the access token parameter
*/
function getTokenName(dets) {
return dets.vendorExtensions['x-tokenName'] || dets.tokenName;
}
for (var key in authSchemes) { for (var key in authSchemes) {
if (authSchemes.hasOwnProperty(key) && OAuthSchemeKeys.indexOf(key) != -1) { //only look at keys that match this scope. if (authSchemes.hasOwnProperty(key) && OAuthSchemeKeys.indexOf(key) != -1) { //only look at keys that match this scope.
var flow = authSchemes[key].flow; var flow = authSchemes[key].flow;
@@ -129,13 +140,13 @@ function handleLogin() {
if(authSchemes[key].type === 'oauth2' && flow && (flow === 'implicit' || flow === 'accessCode')) { if(authSchemes[key].type === 'oauth2' && flow && (flow === 'implicit' || flow === 'accessCode')) {
var dets = authSchemes[key]; var dets = authSchemes[key];
url = dets.authorizationUrl + '?response_type=' + (flow === 'implicit' ? 'token' : 'code'); url = dets.authorizationUrl + '?response_type=' + (flow === 'implicit' ? 'token' : 'code');
window.swaggerUi.tokenName = dets.tokenName || 'access_token'; window.swaggerUi.tokenName = getTokenName(dets) || 'access_token';
window.swaggerUi.tokenUrl = (flow === 'accessCode' ? dets.tokenUrl : null); window.swaggerUi.tokenUrl = (flow === 'accessCode' ? dets.tokenUrl : null);
state = key; state = key;
} }
else if(authSchemes[key].type === 'oauth2' && flow && (flow === 'application')) { else if(authSchemes[key].type === 'oauth2' && flow && (flow === 'application')) {
var dets = authSchemes[key]; var dets = authSchemes[key];
window.swaggerUi.tokenName = dets.tokenName || 'access_token'; window.swaggerUi.tokenName = getTokenName(dets) || 'access_token';
clientCredentialsFlow(scopes, dets.tokenUrl, key); clientCredentialsFlow(scopes, dets.tokenUrl, key);
return; return;
} }
@@ -147,13 +158,13 @@ function handleLogin() {
var dets = o[t]; var dets = o[t];
var ep = dets.loginEndpoint.url; var ep = dets.loginEndpoint.url;
url = dets.loginEndpoint.url + '?response_type=token'; url = dets.loginEndpoint.url + '?response_type=token';
window.swaggerUi.tokenName = dets.tokenName; window.swaggerUi.tokenName = getTokenName(dets);
} }
else if (o.hasOwnProperty(t) && t === 'accessCode') { else if (o.hasOwnProperty(t) && t === 'accessCode') {
var dets = o[t]; var dets = o[t];
var ep = dets.tokenRequestEndpoint.url; var ep = dets.tokenRequestEndpoint.url;
url = dets.tokenRequestEndpoint.url + '?response_type=code'; url = dets.tokenRequestEndpoint.url + '?response_type=code';
window.swaggerUi.tokenName = dets.tokenName; window.swaggerUi.tokenName = getTokenName(dets);
} }
} }
} }

View File

@@ -109,22 +109,33 @@ SwaggerUi.Views.AuthView = Backbone.View.extend({
window.enabledScopes = scopes; window.enabledScopes = scopes;
var flow = auth.get('flow'); var flow = auth.get('flow');
/**
* Returns the name of the access token parameter returned by the server.
*
* @param dets
* The authorisation scheme configuration.
* @return the name of the access token parameter
*/
function getTokenName(dets) {
return dets.vendorExtensions['x-tokenName'] || dets.tokenName;
}
if(auth.get('type') === 'oauth2' && flow && (flow === 'implicit' || flow === 'accessCode')) { if(auth.get('type') === 'oauth2' && flow && (flow === 'implicit' || flow === 'accessCode')) {
dets = auth.attributes; dets = auth.attributes;
url = dets.authorizationUrl + '?response_type=' + (flow === 'implicit' ? 'token' : 'code'); url = dets.authorizationUrl + '?response_type=' + (flow === 'implicit' ? 'token' : 'code');
container.tokenName = dets.tokenName || 'access_token'; container.tokenName = getTokenName(dets) || 'access_token';
container.tokenUrl = (flow === 'accessCode' ? dets.tokenUrl : null); container.tokenUrl = (flow === 'accessCode' ? dets.tokenUrl : null);
state = container.OAuthSchemeKey; state = container.OAuthSchemeKey;
} }
else if(auth.get('type') === 'oauth2' && flow && (flow === 'application')) { else if(auth.get('type') === 'oauth2' && flow && (flow === 'application')) {
dets = auth.attributes; dets = auth.attributes;
container.tokenName = dets.tokenName || 'access_token'; container.tokenName = getTokenName(dets) || 'access_token';
this.clientCredentialsFlow(scopes, dets, container.OAuthSchemeKey); this.clientCredentialsFlow(scopes, dets, container.OAuthSchemeKey);
return; return;
} }
else if(auth.get('type') === 'oauth2' && flow && (flow === 'password')) { else if(auth.get('type') === 'oauth2' && flow && (flow === 'password')) {
dets = auth.attributes; dets = auth.attributes;
container.tokenName = dets.tokenName || 'access_token'; container.tokenName = getTokenName(dets) || 'access_token';
this.passwordFlow(scopes, dets, container.OAuthSchemeKey); this.passwordFlow(scopes, dets, container.OAuthSchemeKey);
return; return;
} }
@@ -136,13 +147,13 @@ SwaggerUi.Views.AuthView = Backbone.View.extend({
dets = o[t]; dets = o[t];
ep = dets.loginEndpoint.url; ep = dets.loginEndpoint.url;
url = dets.loginEndpoint.url + '?response_type=token'; url = dets.loginEndpoint.url + '?response_type=token';
container.tokenName = dets.tokenName; container.tokenName = getTokenName(dets);
} }
else if (o.hasOwnProperty(t) && t === 'accessCode') { else if (o.hasOwnProperty(t) && t === 'accessCode') {
dets = o[t]; dets = o[t];
ep = dets.tokenRequestEndpoint.url; ep = dets.tokenRequestEndpoint.url;
url = dets.tokenRequestEndpoint.url + '?response_type=code'; url = dets.tokenRequestEndpoint.url + '?response_type=code';
container.tokenName = dets.tokenName; container.tokenName = getTokenName(dets);
} }
} }
} }