Maison > développement back-end > Golang > le corps du texte

Qu'est-ce que l'authentification unique ? Comment l'implémenter en utilisant Golang ?

PHPz
Libérer: 2023-03-30 09:52:18
original
1277 Les gens l'ont consulté

Single Sign-On (SSO) est une méthode d'authentification utilisateur Une fois que l'utilisateur s'est connecté, il peut accéder à différents systèmes ou applications sans ressaisir le nom d'utilisateur et le mot de passe. Dans les applications d'entreprise, l'authentification unique revêt une grande importance pour améliorer l'expérience utilisateur, simplifier les opérations de gestion et renforcer la sécurité.

Le langage Golang a reçu une large attention en raison de son efficacité, de sa simplicité et de sa facilité de maintenance. Cet article explique comment utiliser Golang pour mettre en œuvre l'authentification unique.

  1. Principe de l'authentification unique

L'authentification unique comprend principalement trois rôles : agent utilisateur, centre d'authentification et service de ressources. Lorsqu'un utilisateur se connecte à un système d'application, il sera redirigé vers le centre d'authentification pour l'authentification de son identité. Après avoir réussi l'authentification, il peut toujours obtenir des droits d'accès à d'autres services de ressources.

  1. Principe d'authentification unique de Golang

Dans Golang, vous pouvez utiliser Cookie ou Token pour implémenter la fonction d'authentification unique.

2.1 Méthode Cookie

Dans la méthode Cookie, les informations de connexion seront enregistrées dans le Cookie Lors de l'accès à d'autres services après la connexion, les informations contenues dans le Cookie seront transférées au service de ressources, afin que le service de ressources puisse vérifier. l'identité de l'utilisateur.

Tout d'abord, le centre d'authentification effectue une authentification de connexion, qui enregistre les informations d'authentification dans Cookie. Le code est le suivant :

func Login(c *gin.Context) {
    c.SetCookie("username", "123", 3600, "/", "localhost", false, true)
    c.JSON(200, "登录成功")
}
Copier après la connexion

Dans le code ci-dessus, le premier paramètre de la méthode SetCookie est le nom du Cookie, et le deuxième paramètre est la valeur du cookie. Le troisième paramètre est le délai d'expiration du cookie. Le quatrième paramètre est le chemin effectif du cookie. Le cinquième paramètre est le nom de domaine du cookie. Le protocole HTTPS est pris en charge. Le dernier paramètre indique s'il est autorisé.

Dans le service de ressources, vous pouvez obtenir les informations sur les cookies via la méthode c.Request.Cookie("username") :

func SSO(c *gin.Context) {
    cookie, _ := c.Request.Cookie("username")
    if cookie != nil {
        c.JSON(200, "访问成功")
    } else {
        c.JSON(200, "请重新登录")
    }
}
Copier après la connexion

2.2 Méthode Token

Dans la méthode Token, le centre d'authentification crypte les informations d'authentification sous la forme de Token lorsqu'elles sont transmises au. service de ressources, le service de ressources utilise la méthode de décryptage Vérifiez la validité des comptes d'utilisateurs.

Voici le code d'implémentation de la méthode Token :

func Login(c *gin.Context) {
    username := "123"
    token, err := CreateToken(username)
    if err != nil {
        c.JSON(500, "生成Token错误")
        return
    }

    c.JSON(200, gin.H{
        "Token": token,
    })
}

func CreateToken(username string) (string, error) {
    claims := Claims{
        username,
        jwt.StandardClaims{
            ExpiresAt: time.Now().Add(time.Hour * 24).Unix(),
            Issuer:    "test",
        },
    }
    token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
    signedToken, err := token.SignedString([]byte("SecretKey"))
    if err != nil {
        return "", err
    }
    return signedToken, nil
}

func SSO(c *gin.Context) {
    tokenString := c.Request.Header.Get("Authorization")
    if tokenString == "" {
        c.JSON(401, "未登录")
        return
    }
    token, err := jwt.ParseWithClaims(tokenString, &Claims{}, func(token *jwt.Token) (interface{}, error) {
        return []byte("SecretKey"), nil
    })
    if err != nil || !token.Valid {
        c.JSON(401, "未登录")
        return
    }
    c.JSON(200, "访问成功")
}

type Claims struct {
    Username string `json:"username"`
    jwt.StandardClaims
}
Copier après la connexion

Dans le code ci-dessus, le Token généré par la méthode CreateToken contient le nom d'utilisateur, l'heure d'expiration, l'émetteur et d'autres informations une fois le Token généré dans le centre de certification. , le jeton est transmis au service de ressources. Vérifiez la validité du jeton par déchiffrement dans le service de ressources, réalisant ainsi une authentification unique.

  1. Résumé

La fonction d'authentification unique de Golang peut être implémentée via un cookie ou un jeton. Dans les applications d'entreprise, l'authentification unique peut simplifier les processus opérationnels des utilisateurs, améliorer la sécurité des applications et apporter de meilleurs avantages opérationnels aux entreprises.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal