10 | 10 |
"google.golang.org/grpc/metadata"
|
11 | 11 |
)
|
12 | 12 |
|
|
13 |
// moves JWT token from request header to context
|
|
14 |
// particularly useful for servers
|
13 | 15 |
func ToHTTPContext() http.RequestFunc {
|
14 | 16 |
return func(ctx context.Context, r *stdhttp.Request) context.Context {
|
15 | 17 |
token, ok := extractTokenFromAuthHeader(r.Header.Get("Authorization"))
|
|
21 | 23 |
}
|
22 | 24 |
}
|
23 | 25 |
|
|
26 |
// moves JWT token from context to request header
|
|
27 |
// particularly useful for clients
|
24 | 28 |
func FromHTTPContext() http.RequestFunc {
|
25 | 29 |
return func(ctx context.Context, r *stdhttp.Request) context.Context {
|
26 | |
md1, ok := metadata.FromContext(ctx)
|
27 | |
if !ok {
|
28 | |
return ctx
|
|
30 |
token, ok := ctx.Value(JWTTokenContextKey).(string)
|
|
31 |
if ok {
|
|
32 |
r.Header.Add("Authorization", generateAuthHeaderFromToken(token))
|
29 | 33 |
}
|
30 | |
|
31 | |
token, ok := md1[JWTTokenContextKey]
|
32 | |
if ok {
|
33 | |
r.Header.Add("Authorization", generateAuthHeaderFromToken(token[0]))
|
34 | |
}
|
35 | |
fmt.Println(r.Header)
|
36 | 34 |
return ctx
|
37 | 35 |
}
|
38 | 36 |
}
|
39 | 37 |
|
|
38 |
// moves JWT token from grpc metadata to context
|
|
39 |
// particularly userful for servers
|
40 | 40 |
func ToGRPCContext() grpc.RequestFunc {
|
41 | 41 |
return func(ctx context.Context, md *metadata.MD) context.Context {
|
42 | 42 |
// capital "Key" is illegal in HTTP/2.
|
|
54 | 54 |
}
|
55 | 55 |
}
|
56 | 56 |
|
|
57 |
// moves JWT token from context to grpc metadata
|
|
58 |
// particularly useful for clients
|
57 | 59 |
func FromGRPCContext() grpc.RequestFunc {
|
58 | 60 |
return func(ctx context.Context, md *metadata.MD) context.Context {
|
59 | |
md1, ok := metadata.FromContext(ctx)
|
60 | |
if !ok {
|
61 | |
return ctx
|
62 | |
}
|
63 | |
|
64 | |
token, ok := md1[JWTTokenContextKey]
|
|
61 |
token, ok := ctx.Value(JWTTokenContextKey).(string)
|
65 | 62 |
if ok {
|
66 | 63 |
// capital "Key" is illegal in HTTP/2.
|
67 | |
(*md)["authorization"] = []string{generateAuthHeaderFromToken(token[0])}
|
|
64 |
(*md)["authorization"] = []string{generateAuthHeaderFromToken(token)}
|
68 | 65 |
}
|
69 | 66 |
|
70 | 67 |
return ctx
|