91 行
		
	
	
		
			2.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			91 行
		
	
	
		
			2.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <html>
 | |
|   <head>
 | |
|     <title>Telebit Account</title>
 | |
|   </head>
 | |
|   <body>
 | |
|     <form class="js-auth-form">
 | |
|       <input class="js-auth-subject" type="email"/>
 | |
|       <button class="js-auth-submit" type="submit">Login</button>
 | |
|     </form>
 | |
| 
 | |
|     <script src="assets/oauth3.org/oauth3.core.js"></script>
 | |
|     <script>
 | |
|       (function () {
 | |
|         'use strict';
 | |
|         var OAUTH3 = window.OAUTH3;
 | |
|         var oauth3 = OAUTH3.create({
 | |
|           host: window.location.host
 | |
|         , pathname: window.location.pathname.replace(/\/[^\/]*$/, '/')
 | |
|         });
 | |
|         var $ = function () { return document.querySelector.apply(document, arguments); }
 | |
| 
 | |
| 				function onChangeProvider(providerUri) {
 | |
| 					// example https://oauth3.org
 | |
| 					return oauth3.setIdentityProvider(providerUri);
 | |
| 				}
 | |
| 
 | |
| 				// This opens up the login window for the specified provider
 | |
| 				//
 | |
| 				function onClickLogin(ev) {
 | |
|           ev.preventDefault();
 | |
|           ev.stopPropagation();
 | |
| 
 | |
|           // TODO check subject for provider viability
 | |
|           return oauth3.authenticate({
 | |
|             subject: $('.js-auth-subject').value
 | |
|           }).then(function (session) {
 | |
| 
 | |
| 						console.info('Authentication was Successful:');
 | |
| 						console.log(session);
 | |
| 
 | |
| 						// You can use the PPID (or preferably a hash of it) as the login for your app
 | |
| 						// (it securely functions as both username and password which is known only by your app)
 | |
| 						// If you use a hash of it as an ID, you can also use the PPID itself as a decryption key
 | |
| 						//
 | |
| 						console.info('Secure PPID (aka subject):', session.token.sub);
 | |
| 
 | |
| 						return oauth3.request({
 | |
| 							url: 'https://api.oauth3.org/api/issuer@oauth3.org/jwks/:sub/:kid.json'
 | |
|                 .replace(/:sub/g, session.token.sub)
 | |
|                 .replace(/:kid/g, session.token.iss)
 | |
| 						, session: session
 | |
| 						}).then(function (resp) {
 | |
|               console.info("Public Key:");
 | |
|               console.log(resp.data);
 | |
| 
 | |
|               return oauth3.request({
 | |
|                 url: 'https://api.oauth3.org/api/issuer@oauth3.org/acl/profile'
 | |
|               , session: session
 | |
|               }).then(function (resp) {
 | |
| 
 | |
|                 console.info("Inspect Token:");
 | |
|                 console.log(resp.data);
 | |
| 
 | |
|                 return oauth3.request({
 | |
|                   url: 'https://api.telebit.cloud/api/telebit.cloud/account'
 | |
|                 , session: session
 | |
|                 }).then(function (resp) {
 | |
| 
 | |
|                   console.info("Telebit Account:");
 | |
|                   console.log(resp.data);
 | |
| 
 | |
|                 });
 | |
| 
 | |
| 
 | |
|               });
 | |
| 
 | |
| 						});
 | |
| 
 | |
| 					}, function (err) {
 | |
| 						console.error('Authentication Failed:');
 | |
| 						console.log(err);
 | |
| 					});
 | |
| 				}
 | |
| 
 | |
|         $('body form.js-auth-form').addEventListener('submit', onClickLogin);
 | |
|         onChangeProvider('oauth3.org');
 | |
|       }());
 | |
|     </script>
 | |
|   </body>
 | |
| </html>
 |