X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=navigator.gssweb.js;h=cd173897fdec66575e64d2717818ff91bfbc8e37;hb=dc0f6484a2e1e5abd9e46078288888dead9518c6;hp=a72fa87dc695138c8351a1364e51a1ee26585677;hpb=6d773ffb25a1a916a36f4aab238700984e393f67;p=gssweb.git diff --git a/navigator.gssweb.js b/navigator.gssweb.js index a72fa87..cd17389 100644 --- a/navigator.gssweb.js +++ b/navigator.gssweb.js @@ -1,4 +1,4 @@ -console.log("Loading navigator.gssweb.js - #2"); +console.log("Loading navigator.gssweb.js - #4"); var GSSWeb = (function () { @@ -17,14 +17,8 @@ var GSSWeb = (function () { this.serverToken = ""; this.clientCred = ""; this.xhr = new XMLHttpRequest(); - this.xhr.open("POST", this.serverPath, true); - this.xhr.setRequestHeader( - 'Content-Type', - 'application/x-www-form-urlencoded' - ); - this.xhr.onreadystatechange = this.recvTokenFromServer.bind(this); - this.gss = new navigator.gss_eap({ + this.gss = new navigator.gssEap({ appTag: this.appTag, error: this.handleGSSError.bind(this) }); @@ -73,7 +67,7 @@ var GSSWeb = (function () { GSSWeb.prototype.authGetServerName = function () { this.gss.import_name({ - name: "HTTP@" + window.location.host, + name: "HTTP@" + window.location.hostname, success: this.authReceiveServerName.bind(this) }); }; @@ -124,7 +118,7 @@ var GSSWeb = (function () { }; if ("" != this.clientCred) { - params.claimant_cred_handle = this.clientCred; + params.cred_handle = this.clientCred; } if ("" != this.serverToken) { params.input_token = this.serverToken; @@ -135,31 +129,37 @@ var GSSWeb = (function () { this.gss.init_sec_context(params); }; + GSSWeb.prototype.sendTokenToServer = - function (ctxt, - mech_type, - output_token, - ret_flags, - time_rec, + function (data, app_tag) { - this.clientToken = output_token; - this.context = ctxt; + this.clientToken = data.output_token; + this.context = data.context_handle; - var data = "nonce=" + this.nonce + + var msg = "nonce=" + this.nonce + "&token=" + encodeURIComponent(this.clientToken); - this.xhr.send(data); + + this.xhr.open("POST", this.serverPath, true); + + this.xhr.setRequestHeader( + 'Content-Type', + 'application/x-www-form-urlencoded' + ); + this.xhr.onreadystatechange = this.recvTokenFromServer.bind(this); + + this.xhr.send(msg); }; + GSSWeb.prototype.recvTokenFromServer = function () { // Only care when we're ready if (this.xhr.readyState != 4) { return; } - var serverResponse = JSON.parse(this.xhr.responseText); - this.serverToken = serverResponse.gssweb.token; switch (this.xhr.status) { case 200: // Finished! + var serverResponse = JSON.parse(this.xhr.responseText); var decoded = window.atob(serverResponse.application.data); this.authenticationState = true; this.success( @@ -170,12 +170,14 @@ var GSSWeb = (function () { break; case 401: // Continue needed + var serverResponse = JSON.parse(this.xhr.responseText); + this.serverToken = serverResponse.gssweb.token; this.authInitSecContext(); break; default: // We have some server-reported error this.error( - window.location.host + + window.location.hostname + " reported an error; aborting", this.appTag );