Add kaya-oidc package for OpenID Connect authentication
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import os
|
||||
|
||||
from kaya.core import HttpContext, KayaApp
|
||||
from kaya.oidc import OIDCConfig, OIDCApp
|
||||
from kaya.session import InMemorySessionStore, SessionMiddleware
|
||||
|
||||
app = KayaApp()
|
||||
session_app = SessionMiddleware(app, InMemorySessionStore())
|
||||
|
||||
oidc = OIDCApp(
|
||||
session_app,
|
||||
OIDCConfig(
|
||||
issuer=os.environ.get('OIDC_ISSUER', 'https://accounts.google.com'),
|
||||
client_id=os.environ.get('OIDC_CLIENT_ID', 'replace-me'),
|
||||
client_secret=os.environ.get('OIDC_CLIENT_SECRET'),
|
||||
redirect_uri=os.environ.get('OIDC_REDIRECT_URI', 'http://localhost:8000/auth/callback'),
|
||||
fetch_userinfo=True,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@oidc.GET('/')
|
||||
async def home(ctx: HttpContext) -> None:
|
||||
await ctx.send_str(200, 'public home')
|
||||
|
||||
|
||||
@oidc.GET('/profile')
|
||||
@oidc.require_auth
|
||||
async def profile(ctx: HttpContext) -> None:
|
||||
user = oidc.get_user(ctx)
|
||||
if user is None:
|
||||
await ctx.send_empty(401)
|
||||
return
|
||||
await ctx.send_str(200, f'Hello {user.name or user.email or user.sub}')
|
||||
Reference in New Issue
Block a user