<html> <head> <link href="/main.css" rel="stylesheet"/> </head> <body> <h1>HOAuth2 Demo</h1> <h2>Authorization Code flow</h2> {{#idps}} <section class="login-with"> {{^isLogin}} <a href="/login?idp={{idpName}}">Sign in with {{idpName}}</a> {{/isLogin}} {{#isLogin}} <h2>Welcome to {{idpName}}</h2> {{#user}} <div class="result">Hello, {{idpName}}</div> {{/user}} <a href="/logout?idp={{idpName}}">Logout</a> <a href="/refresh-token?idp={{idpName}}">Refresh</a> {{/isLogin}} </section> {{/idps}} <h2>Password flow</h2> {{#idps}} {{#hasPasswordGrant}} <section class="login-with"> <a href="/login/password-grant?idp={{idpName}}">Sign-in with {{idpName}}</a> </section> {{/hasPasswordGrant}} {{/idps}} <ul> <li>Check console for login success</li> </ul> <h2>Client Credentials flow</h2> {{#idps}} {{#hasClientCredentialsGrant}} <section class="login-with"> <a href="/login/cc-grant?idp={{idpName}}">Sign-in with {{idpName}}</a> </section> {{/hasClientCredentialsGrant}} {{/idps}} <ul> <li>Check console for login success</li> </ul> <h2>JWT Bearer flow</h2> <section class="login-with"> <a href="/login/jwt-grant">Test Google service account</a> </section> <ul> <li>Check console for login success</li> </ul> <h2>Device Auth flow</h2> {{#idps}} {{#hasDeviceGrant}} <section class="login-with"> <a href="/login/device-auth-grant?idp={{idpName}}">Sign-in with {{idpName}}</a> </section> {{/hasDeviceGrant}} {{/idps}} <ul> <li>Check console for login success</li> </ul> <h2>Notes</h2> <ol> <li>For StackExchange, the callback URI cannot have port, hence have manually add port 9988 in browser when Stack Exchange redirects back.</li> <li>For Slack, the callback url has to be https and without any port hence also need manual intervention. (TODO: add tls to the server)</li> </ol> </p> </body> </html>