GO authentifier le jeton d'accès (keycloak)
Dans les applications réseau modernes, la sécurité est cruciale. Afin de protéger les données des utilisateurs et les ressources système, la vérification des jetons d'accès est une étape essentielle. En tant que puissante solution d'authentification des identités et de gestion des accès, Keycloak offre aux développeurs une méthode de vérification simple et sécurisée. Dans cet article, l'éditeur PHP Xigua présentera comment utiliser Keycloak pour vérifier les jetons d'accès afin de garantir la sécurité des applications. Grâce aux conseils de cet article, vous pourrez facilement mettre en œuvre la vérification des jetons d'accès et vous assurer que seuls les utilisateurs autorisés peuvent accéder à votre application.
Contenu de la question
J'essaie d'implémenter la vérification du jeton d'accès à l'aide de GO. Mais les exemples que j'ai vus en ligne semblent simplement utiliser TOKEN_SECRET pour le valider. Mais je suis habitué à programmer en Java Spring et je n'ai pas besoin d'utiliser TOKEN_SECRET. Je fournis simplement le jwk-set-uri et il vérifie la validité (filtres de sécurité automatique, etc.) et je sais qu'il parle au serveur oauth et effectue cette validation.
N'y a-t-il pas de bibliothèque dans Go qui puisse vérifier si le token est valide en faisant une requête au serveur oauth ?
Je sais que je peux le faire manuellement en faisant une requête au point de terminaison userinfo du serveur oauth :
http://localhost:8080/auth/realms/<your_realm>/protocol/openid-connect/userinfo
(inclure le jeton dans l'en-tête avec l'autorisation de clé)
Mais je ne sais pas si c’est tout à fait aux normes.
Quelle est la bonne approche ?
Solution de contournement
Réponse courte : utilisez go-oidc
Réponse longue :
Tout d'abord, comprenons comment Spring Security valide automatiquement les jetons d'accès JWT. Par convention, si vous êtes en application.yaml
配置文件中定义 OAuth 2.0 或 OIDC 客户端属性,Spring 将自动在安全过滤器链中连接一个过滤器,从 Keycloak 中获取 jwk-set
, Keycloak est un ensemble de clés publiques qui correspondent aux clés que Keycloak utilise pour signer les tokens. Le filtre sera appliqué à toutes les routes protégées et spring utilisera la clé publique pour vérifier que la signature du token est valide et effectuer d'autres vérifications le cas échéant (audience, timeout, etc...)
Alors, comment fait-on cela dans Go ? Nous pouvons écrire un middleware simple qui accepte si l'heure de l'instruction jwk-set
并使用它来验证令牌。您需要检查 alg
声明以查看使用了哪种签名算法,从 jwk-set
中选择相应的公钥并检查签名是否有效。然后,解码令牌,确认 iss
和 sub
声明,以确保它来自受信任的颁发者并面向目标受众,并检查它是否尚未过期。检查 nbf
(不早于)和 iat
(publiée le) est correcte. Enfin, les informations pertinentes du jeton sont injectées dans le contexte de la demande si nécessaire en aval.
func JWTMiddleware(jwkSet map[string]*rsa.PublicKey) func(http.Handler) http.Handler { return func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { authHeader := r.Header.Get("Authorization") if authHeader == "" { http.Error(w, "Authorization header is required", http.StatusUnauthorized) return } tokenString := strings.TrimPrefix(authHeader, "Bearer ") token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) { if _, ok := token.Method.(*jwt.SigningMethodRSA); !ok { return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"]) } alg := token.Method.Alg() publicKey, ok := jwkSet[alg] if !ok { return nil, fmt.Errorf("no key found for signing method: %v", alg) } return publicKey, nil }) if err != nil || !token.Valid { http.Error(w, "Invalid token", http.StatusUnauthorized) return } // Other checks, ISS, Aud, Expirey, etc ... // If needed, store the user principal // and other relevant info the request context next.ServeHTTP(w, r) }) } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

我有下面的代码:publicSecurityFilterChainsecurityFilterChain(HttpSecurityhttp)throwsException{returnhttp.httpBasic().disable().cors().and().csrf().disable().authorizeHttpRequests().requestMatchers("

Comment utiliser Java pour développer un système d'authentification unique basé sur SpringSecuritySAML Introduction : Avec le développement rapide d'Internet, de plus en plus d'applications sont développées. Dans ces applications, la connexion des utilisateurs est l'une des fonctionnalités les plus courantes. Cependant, pour les applications de niveau entreprise, les utilisateurs doivent se connecter à plusieurs systèmes, ce qui entraînera une très mauvaise expérience de connexion. Afin de résoudre ce problème, le système d'authentification unique (SingleSign-On, appelé SSO) a vu le jour. simple

J'essaie d'implémenter la validation du jeton d'accès à l'aide de GO. Mais les exemples que j'ai vus en ligne semblent simplement utiliser TOKEN_SECRET pour le vérifier. Mais je suis habitué à programmer dans Javaspring et je n'ai pas besoin d'utiliser TOKEN_SECRET. Je fournis simplement le jwk-set-uri et il vérifie la validité (filtres de sécurité automatique, etc.) et je sais qu'il parle au serveur oauth et effectue cette validation. N'y a-t-il pas de bibliothèque dans Go pour vérifier si le token est valide en faisant une requête au serveur oauth ? Je sais que je peux le faire manuellement en faisant une requête au point de terminaison userinfo du serveur oauth : http://localh

Dans les systèmes de gestion back-end, le contrôle des autorisations d'accès est généralement requis pour limiter la capacité des différents utilisateurs à accéder aux interfaces. Si un utilisateur ne dispose pas d'autorisations spécifiques, il ne peut pas accéder à certaines interfaces. Cet article utilisera le projet waynboot-mall comme exemple pour présenter comment les systèmes de gestion back-end courants introduisent le cadre de contrôle des autorisations SpringSecurity. Le schéma est le suivant : Adresse du projet waynboot-mall : https://github.com/wayn111/waynboot-mall 1. Qu'est-ce que SpringSecurity SpringSecurity est un projet open source basé sur le framework Spring, visant à fournir une sécurité puissante et flexible ? pour les applications Java.

Comment utiliser Java pour développer un système d'authentification unique basé sur SpringSecurityOAuth2 Introduction : Avec le développement rapide d'Internet, de plus en plus de sites Web et d'applications nécessitent que les utilisateurs se connectent, mais les utilisateurs ne veulent pas se souvenir de chaque site Web ou application. Un numéro de compte et un mot de passe. Le système d'authentification unique (SingleSign-On, appelé SSO) peut résoudre ce problème, permettant aux utilisateurs d'accéder à plusieurs sites Web et applications sans authentification répétée après s'être connectés une fois. Cet article présentera

J'ai un service Springrest et je souhaite l'utiliser à la fois pour les utilisateurs authentifiés et non authentifiés. Si l'utilisateur est authentifié, je souhaite obtenir les informations utilisateur de securitycontextholder.getcontext().getauthentication(). Si j'utilise .antmatchers("/app/rest/question/useroperation/list/**").permitall() dans la configuration ouath2 comme indiqué ci-dessous, je peux alors obtenir les informations utilisateur de l'utilisateur authentifié, mais pas les utilisateurs authentifiés. apparaîtra 40

Introduction Dans le monde interconnecté d'aujourd'hui, les API RESTful sont devenues un mécanisme clé de communication entre les applications. Avec Java, un langage de programmation puissant, vous pouvez créer des API RESTful efficaces, évolutives et bien entretenues. Chapitre 1 : Principes de base de RESTfulAPI et meilleures pratiques de l'architecture RESTful Méthodes HTTP, codes d'état et en-têtes de réponse Formats de données tels que JSON et XML Chapitre 2 : Conception et modélisation de RESTfulAPI Principes de conception de RESTfulAPI Modélisation des ressources et conception d'URI Contrôle de version et HATEOAS Chapitre 3 : Utilisation SpringBoot pour créer l'API RESTful Introduction à SpringBoot et démarrage de la création et

Vue.js et Spring Boot interagissent via : API RESTful : Vue.js utilise Axios pour envoyer des requêtes HTTP asynchrones, et Spring Boot fournit une implémentation d'API RESTful. Transmission de données : les données sont transmises via des requêtes et des réponses, telles que le corps de la requête ou les paramètres de requête. Méthode de requête : les méthodes de requête HTTP telles que GET, POST, PUT et DELETE sont utilisées pour spécifier l'opération. Routage : l'annotation Spring Boot @RequestMapping définit le routage du contrôleur et Vue.js utilise Vue Router pour définir le routage de l'interface. Gestion de l'état : Vu
