Chromium Code Reviews

Side by Side Diff: go/src/infra/libs/auth/internal/service.go

Issue 1153883002: go: infra/libs/* now live in luci-go. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: move the rest too Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package internal
6
7 import (
8 "io/ioutil"
9
10 "golang.org/x/net/context"
11 "golang.org/x/oauth2/google"
12 "golang.org/x/oauth2/jwt"
13 )
14
15 type serviceAccountTokenProvider struct {
16 oauthTokenProvider
17
18 ctx context.Context
19 config *jwt.Config
20 }
21
22 // NewServiceAccountTokenProvider returns TokenProvider that supports service ac counts.
23 func NewServiceAccountTokenProvider(ctx context.Context, credsPath string, scope s []string) (TokenProvider, error) {
24 buf, err := ioutil.ReadFile(credsPath)
25 if err != nil {
26 return nil, err
27 }
28 config, err := google.JWTConfigFromJSON(buf, scopes...)
29 if err != nil {
30 return nil, err
31 }
32 return &serviceAccountTokenProvider{
33 oauthTokenProvider: oauthTokenProvider{
34 interactive: false,
35 tokenFlavor: "service_account",
36 },
37 ctx: ctx,
38 config: config,
39 }, nil
40 }
41
42 func (p *serviceAccountTokenProvider) MintToken() (Token, error) {
43 src := p.config.TokenSource(p.ctx)
44 tok, err := src.Token()
45 if err != nil {
46 return nil, err
47 }
48 return makeToken(tok), nil
49 }
50
51 func (p *serviceAccountTokenProvider) RefreshToken(Token) (Token, error) {
52 // JWT tokens are self sufficient, there's no need for refresh_token. Mi nting
53 // a token and "refreshing" it is a same thing.
54 return p.MintToken()
55 }
OLDNEW
« no previous file with comments | « go/src/infra/libs/auth/internal/internal.infra_testing ('k') | go/src/infra/libs/auth/internal/user.go » ('j') | no next file with comments »

Powered by Google App Engine