/
oidc_mock.go
55 lines (47 loc) · 1.82 KB
/
oidc_mock.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package oidc
import (
"context"
"time"
"github.com/zitadel/oidc/v3/pkg/oidc"
"golang.org/x/oauth2"
)
type OIDCMockProvider struct {
UnimplementedAuthProvider
}
// NewOIDCProvider creates a new oidc provider
func NewOIDCMockProvider(clientID, clientSecret, redirectURI, issuer string, scopes []string) (*OIDCMockProvider, error) {
return &OIDCMockProvider{}, nil
}
// IdpAuthURL returns the url to redirect the user for authentication
func (o *OIDCMockProvider) IdpAuthURL(codeChallenge string) string {
return "http://mock.idp/auth"
}
// RetrieveTokens retrieves the tokens from the idp callback redirect and returns them
// `code` is the `code` query parameter from the idp callback redirect
func (o *OIDCMockProvider) RetrieveTokens(ctx context.Context, code, codeVerifier string) (*oidc.Tokens[*oidc.IDTokenClaims], error) {
return &oidc.Tokens[*oidc.IDTokenClaims]{
Token: &oauth2.Token{
AccessToken: "foo",
RefreshToken: "bar",
Expiry: time.Now().Add(1 * time.Hour),
},
IDToken: "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTA2MTI5MDIyfQ",
IDTokenClaims: &oidc.IDTokenClaims{},
}, nil
}
func (o *OIDCMockProvider) VerifyTokens(ctx context.Context, accessToken, idTokeb string) (bool, error) {
return false, nil
}
// RefreshTokens refreshes the tokens and returns them
// clientAssertion is the client assertion jwt (tokens.AccessToken)
func (o *OIDCMockProvider) RefreshTokens(ctx context.Context, refreshToken, clientAssertion string) (*oidc.Tokens[*oidc.IDTokenClaims], error) {
return &oidc.Tokens[*oidc.IDTokenClaims]{
Token: &oauth2.Token{
AccessToken: "foo",
RefreshToken: "bar",
Expiry: time.Now().Add(2 * time.Hour),
},
IDToken: "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaW1111111111111111asda",
IDTokenClaims: &oidc.IDTokenClaims{},
}, nil
}