authlib / authlib/example-oidc-server

Add OIDC Discovery support

Ouverte
#11 2 commentaires 4 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Python
Étoiles
65
Forks
37
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

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).

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Commencez par examiner l’endpoint jwks_uri existant de #2 et le handler proposé pour /.well-known/openid-configuration dans cette issue. Vérifiez les exigences de découverte d’OpenID Connect et confirmez les endpoints répertoriés, l’issuer, les algorithmes de signature, les types de réponse, les types de sujet et les méthodes d’authentification des tokens. La tâche est terminée lorsque le serveur d’exemple expose un endpoint de découverte correct qui fonctionne avec des clients OIDC existants.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
api, authentication
Type d'issue
Fonctionnalité
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.