authlib / authlib/example-oidc-server

Add OIDC Discovery support

Aperta
#11 2 commenti 4 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Python
Stelle
65
Fork
37
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

This makes it massively easier to integrate with existing oidc clients.

After getting the the `jwks_uri` endpoint to work as described in #2 I added this handler to get auto discovery to work:

```python
@bp.route("/.well-known/openid-configuration")
def well_known_openid_configuration():
def external_url(function_name):
return url_for(function_name, _external=True)

return jsonify({
"authorization_endpoint": external_url('.authorize_endpoint'),
"token_endpoint": external_url('.token_endpoint'),
"userinfo_endpoint": external_url('.userinfo_endpoint'),
"jwks_uri": external_url('.jwks_endpoint'),
# Do I even need this one?
# IMO the OIDC server doesn't have a concept of a user being still logged in? --mh
# "end_session_endpoint": "http://oidc:4000/openid/end-session",
"id_token_signing_alg_values_supported": [
"HS256",
"RS256"
],
"issuer": JWT_CONFIG['iss'],
"response_types_supported": [
"code",
# TODO check what it takes to support these too
# "id_token",
# "id_token token",
# "code token",
# "code id_token",
# "code id_token token"
],
"subject_types_supported": [
"public"
],
"token_endpoint_auth_methods_supported": [
# TODO is supporting both a good idea? --mh
"client_secret_post",
"client_secret_basic"
],
})
```

@lepture is there a way to add this to the example code? Or use this a starting point to add it? (I'm not particularly sure this is even right).

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Inizia esaminando l’endpoint jwks_uri esistente di #2 e l’handler proposto per /.well-known/openid-configuration in questa issue. Verifica i requisiti di discovery di OpenID Connect e conferma gli endpoint elencati, l’issuer, gli algoritmi di firma, i tipi di risposta, i tipi di soggetto e i metodi di autenticazione dei token. Il lavoro è completato quando il server di esempio espone un endpoint di discovery corretto che funziona con client OIDC esistenti.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
api, authentication
Tipo di issue
Funzionalità
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.