3 <title>GSSApi Tester Application</title>
5 <!-- Latest compiled and minified CSS -->
6 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
8 <!-- Optional theme -->
9 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
13 <div class="container-fluid">
15 <div class="col-xs-4">
17 <h2>GSS Import Name</h2>
18 <div class="form-group">
19 <label for="import_name_name">Name:</label>
20 <input name="import_name_name" id="import_name_name" value="HTTP@localhost.localdomain" />
22 <div class="form-group">
23 <label for="import_name_mech">Mechanism:</label>
24 <input name="import_name_mech"
26 value="{1 2 840 113554 1 2 1 4 }" />
28 <button id="import_name">gss_import_name</button>
29 <div id='import_response' style="overflow: auto;"></div>
33 <div class="col-xs-4">
34 <!-- middle column -->
35 <h2>GSS Acquire Cred</h2>
36 <div class="form-group">
37 <label for="acquire_cred_desired_name">Desired name:</label>
38 <select name="acquire_cred_desired_name" class="gss_name">
42 <div class="form-group">
43 <label for="acquire_cred_cred_usage">Cred Usage:</label>
44 <select name="acquire_cred_cred_usage">
45 <option value="GSS_C_INITIATE">GSS_C_INITIATE</option>
46 <option value="GSS_C_ACCEPT">GSS_C_ACCEPT</option>
47 <option value="GSS_C_BOTH">GSS_C_BOTH</option>
51 <div class="form-group">
52 <label for="acquire_cred_time_req">Requested lifetime in seconds (0 for default 2 hours):</label>
53 <input name="acquire_cred_time_req" value="0"/>
56 <div class="form-group">
57 <label for="acquire_cred_desired_mechs">Desired mechanisms (comma separated, blank for default):</label>
58 <input name="acquire_cred_time_req" value=""/>
64 <div class="col-xs-4">
66 <h2>GSS Init Sec Context</h2>
67 <div class="form-group">
68 <label for="init_sec_context_target_name">Target name:</label>
69 <select name="init_sec_context_target_name" class="gss_name">
73 <div class="form-group">
74 <label for="init_sec_context_context_handle">Context handle:</label>
75 <input name="init_sec_context_context_handle"/>
78 <div class="form-group">
79 <label for="init_sec_context_input_token">Input token:</label>
80 <input name="init_sec_context_input_token"/>
83 <div class="form-group">
84 <label for="init_sec_context_mech_type">Mechanism type (blank for default):</label>
85 <input name="init_sec_context_mech_type"/>
88 <div class="form-group">
89 <label for="init_sec_context_time_req">Requested lifetime in seconds (0 for default 2 hours):</label>
90 <input name="init_sec_context_time_req" value="0" />
93 <div class="form-group">
94 <label for="init_sec_context_req_flags">Request flags (0 unless you know what you're doing):</label>
95 <input name="init_sec_context_req_flags" value="0" />
102 <div class="col-xs-12">
103 <div class="form-group">
104 <label for="authenticate_server_path">Server Path:</label>
105 <input name="authenticate_server_path" value="/gss" />
108 <button id="authenticate">authenticate</button>
109 <div id='authenticate_response' style="overflow: auto;"></div>
115 <!-- Scripts! ------------------------------------------------------------------------------>
116 <!-- Required JQuery -->
117 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
119 <!-- Latest compiled and minified JavaScript -->
120 <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
122 <!-- GSS Web script -->
123 <script src="navigator.gssweb.js"></script>
125 <script language="javascript">
129 function report(msg, elemId) {
130 var element = $(elemId);
131 element.prepend('<p>' + msg + '</p>');
134 function doImportName() {
135 gss = gss || new navigator.gss_eap({
137 error: function(major, minor, errMsg, appTag)
139 report("Error", '#import_response');
140 report("Major: " + major + "; Minor: " + minor, '#import_response');
141 report("<blockquote>" + errMsg + "</blockquote>", '#import_response');
142 report("appTag: " + appTag, '#import_response');
146 name: document.getElementById('import_name_name').value,
147 name_type: document.getElementById('import_name_mech').value,
148 success: function(data, appTag) {
149 report("GSS imported name: " + data.gss_name, '#import_response');
150 report("appTag: " + appTag, '#import_response');
151 newOption = $('<option></option>');
152 newOption.attr('value', data.gss_name);
153 newOption.append(document.getElementById('import_name_name').value);
154 $('.gss_name').append(newOption);
159 function doAuthenticate() {
160 gssweb = gssweb || new navigator.gssweb({
162 appTag: "Authentication Test",
163 error: function(errMsg) {
164 report(errMsg, '#authenticate_response');
166 success: function(appData, contentType, appTag) {
167 report(contentType, '#authenticate_response');
168 report("Content-Type:", '#authenticate_response');
169 report(appData, '#authenticate_response');
170 report("Found app data:", '#authenticate_response');
171 report("Success!", '#authenticate_response');
174 gssweb.authenticate();
177 document.addEventListener('DOMContentLoaded', function () {
178 <!-- Listen for the import name button click -->
179 document.getElementById('import_name').addEventListener(
180 'click', doImportName
183 <!-- Listen for the authenticate button click -->
184 document.getElementById('authenticate').addEventListener(
185 'click', doAuthenticate