charts/osdu-developer-auth/templates/config-map.yaml (157 lines of code) (raw):

{{- $namespace := .Release.Namespace }} {{- $clientId := .Values.azure.appId }} {{- $tenantId := .Values.azure.tenantId }} --- apiVersion: v1 kind: ConfigMap metadata: name: osdu-auth-html namespace: {{ $namespace }} data: index.html: | <!DOCTYPE html> <html lang="en"> <!-- python3 -m http.server 8080 --> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta http-equiv="x-ua-compatible" content="ie=edge"> <title>OAuth Login</title> <!-- Font Awesome --> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.2/css/all.css"> <!-- Bootstrap core CSS --> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"> <style type="text/css"> textarea { margin-bottom: 5px; } </style> </head> <body> <div id="app"> <form id="oauth-form" @submit.prevent="getToken" class="text-center border border-light p-5" action="#!"> <p class="h2 mb-4">Microsoft Identity Platform (v2.0)</p> <div class="form-group"> <div class="form-row"> <div class="form-group col-md-6"> <label class="float-left" for="clientId">ClientId</label> <input type="text" class="form-control" id="clientId" v-model="clientId"> </div> <div class="form-group col-md-6"> <label class="float-left" for="tenantId">TenantId</label> <input type="text" class="form-control" id="tenantId" v-model="tenantId"> </div> </div> <div class="form-row"> <div class="col-md-6 mb-3"> <label class="float-left" for="responseType">RedirectUrl</label> <input type="text" class="form-control" id="redirectUrl" v-model="redirectUrl"> </div> <div class="col-md-3 mb-3"> <label class="float-left" for="responseType">ResponseType</label> <input type="text" class="form-control" id="responseType" v-model="responseType"> </div> <div class="col-md-3 mb-3"> <label class="float-left" for="responseMode">ResponseMode</label> <input type="text" class="form-control" id="responseMode" v-model="responseMode"> </div> </div> <div class="form-row"> <div class="col-md-12 mb-3"> <label class="float-left" for="scope">Scope</label> <input type="text" class="form-control" id="scope" v-model="scope"> </div> </div> <div class="form-row"> <div class="col-md-12 mb-1"> <a :href="signOutUrl" class="btn btn-link float-left" v-if="authorizationCode" class="col-2">Logout</a> <a :href="authorizeUrl" class="btn btn-primary float-right" class="col-2">Authorize</a> </div> </div> </div> <hr /> <div class="form-group shadow-textarea"> <div class="form-row"> <div class="col-md-4 mb-4"> <label class="float-left" for="accessToken">ResponseType: code</label> <textarea id="authorizationCode" v-model="authorizationCode" class="form-control z-depth-1" rows="10"></textarea> </div> <div class="col-md-4 mb-4"> <label class="float-left" for="accessToken">ResponseType: token</label> <textarea id="accessToken" v-model="accessToken" class="form-control z-depth-1" rows="10"></textarea> <a @click="decodeAccess()" class="btn btn-info btn-sm float-right" v-if="accessToken">Decode</a> </div> <div class="col-md-4 mb-4"> <label class="float-left" for="idToken">ResponseType: id_token</label> <textarea id="idToken" v-model="idToken" class="form-control z-depth-1" rows="10"></textarea> <a @click="decodeId()" class="btn btn-info btn-sm float-right" v-if="idToken">Decode</a> </div> </div> </div> </form> </div> <!-- SCRIPTS --> <!-- JQuery --> <script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script> <!-- Bootstrap core JavaScript --> <script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script> <!-- Vue JavaScript --> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> var app = new Vue({ el: '#oauth-form', data: { tenantId: '{{ $tenantId }}', clientId: '{{ $clientId }}', redirectUrl: window.location.href, // Use the current page URL, responseType: 'code', responseMode: 'fragment', scope: '{{ $clientId }}/.default openid profile offline_access', authorizationCode: null, accessToken: null, idToken: null }, computed: { authorizeUrl: function () { return "https://login.microsoftonline.com/" + this.tenantId + "/oauth2/v2.0/authorize?" + "client_id=" + this.clientId + "&response_type=" + this.responseType + "&redirect_uri=" + this.redirectUrl + "&response_mode=" + this.responseMode + "&scope=" + this.scope + "&state=12345" + "&nonce=dummy123"; }, decodeId: function () { decodeUrl = "https://jwt.ms/#id_token=" + this.idToken; window.open(decodeUrl, "_blank"); }, decodeAccess: function () { decodeUrl = "https://jwt.ms/#id_token=" + this.accessToken; window.open(decodeUrl, "_blank"); }, signOutUrl: function () { return "https://login.microsoftonline.com/" + this.clientId + "/oauth2/logout"; }, redirect: function () { return 'https://' + location.host + location.pathname } }, beforeMount: function () { if (window.location.hash) { var params = window.location.hash.substr(1).split('&').reduce(function (result, item) { var parts = item.split('='); result[parts[0]] = parts[1]; return result; }, {}); this.authorizationCode = params['code']; this.accessToken = params['access_token']; this.idToken = params['id_token']; } } }) </script> </body> </html>