在golang服务器中找出使用Auth0

时间:2017-07-21 13:42:29

标签: rest go auth0

我正在使用auth0golang来提供与here所示类似的休息服务。

我想知道如何找出当前触发某个API调用的用户名 - 例如,如果有人请求http://localhost:3000/products - 在这种情况下,go处理程序如下所示:

var ProductsHandler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    payload, _ := json.Marshal(products)

    w.Header().Set("Content-Type", "application/json")
    w.Write([]byte(payload))
})

请求r是否包含有关当前用户的更多信息?

或者我是否需要在中间件身份验证中找出当前用户:

func authMiddleware(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        secret := []byte("{YOUR-AUTH0-API-SECRET}")
        secretProvider := auth0.NewKeyProvider(secret)
        audience := "{YOUR-AUTH0-API-AUDIENCE}"

        configuration := auth0.NewConfiguration(secretProvider, audience, "https://{YOUR-AUTH0-DOMAIN}.auth0.com/", jose.HS256)
        validator := auth0.NewValidator(configuration)

        token, err := validator.ValidateRequest(r)

        if err != nil {
            fmt.Println(err)
            fmt.Println("Token is not valid:", token)
            w.WriteHeader(http.StatusUnauthorized)
            w.Write([]byte("Unauthorized"))
        } else {
            next.ServeHTTP(w, r)
        }
    })
}

token是否包含有关用户的更多信息?

我有点迷失在这里。 auth0完美地确保只有注册人员可以使用REST-API,但我想提供用户特定信息。因此,它取决于当前用户REST回拨的内容。最初,我认为auth0会处理这个问题。有没有一种简单的方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

是的,您需要使用token来获取有关请求问题的信息。

要对您想要的所有内容进行排序,您需要查看下一个:

索赔有一个字段

Issuer string `json:"iss,omitempty"`

你感兴趣的。