@@ -1,36 +1,32 @@
1package providers
1package providers
10− "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/sessions"
13// ADFSProvider represents an ADFS based Identity Provider
8// ADFSProvider represents an ADFS based Identity Provider
14type ADFSProvider struct {
9type ADFSProvider struct {
15 *OIDCProvider
10 *OIDCProvider
16− SkipScope bool
11+ skipScope bool
19var _ Provider = (*ADFSProvider)(nil)
14var _ Provider = (*ADFSProvider)(nil)
22− ADFSProviderName = "ADFS"
17+ adfsProviderName = "ADFS"
23− ADFSDefaultScope = "openid email profile"
18+ adfsDefaultScope = "openid email profile"
24− ADFSSkipScope = false
19+ adfsSkipScope = false
20+ adfsEmailClaim = "upn"
27// NewADFSProvider initiates a new ADFSProvider
23// NewADFSProvider initiates a new ADFSProvider
28func NewADFSProvider(p *ProviderData) *ADFSProvider {
24func NewADFSProvider(p *ProviderData) *ADFSProvider {
30 p.setProviderDefaults(providerDefaults{
25 p.setProviderDefaults(providerDefaults{
31− name: ADFSProviderName,
26+ name: adfsProviderName,
32− scope: ADFSDefaultScope,
27+ scope: adfsDefaultScope,
29+ p.EmailClaim = adfsEmailClaim
35 if p.ProtectedResource != nil && p.ProtectedResource.String() != "" {
31 if p.ProtectedResource != nil && p.ProtectedResource.String() != "" {
36 resource := p.ProtectedResource.String()
32 resource := p.ProtectedResource.String()
@@ -48,13 +44,13 @@ func NewADFSProvider(p *ProviderData) *ADFSProvider {
48 ProviderData: p,
44 ProviderData: p,
49 SkipNonce: true,
45 SkipNonce: true,
51− SkipScope: ADFSSkipScope,
47+ skipScope: adfsSkipScope,
55// Configure defaults the ADFSProvider configuration options
51// Configure defaults the ADFSProvider configuration options
56func (p *ADFSProvider) Configure(skipScope bool) {
52func (p *ADFSProvider) Configure(skipScope bool) {
57− p.SkipScope = skipScope
53+ p.skipScope = skipScope
60// GetLoginURL Override to double encode the state parameter. If not query params are lost
56// GetLoginURL Override to double encode the state parameter. If not query params are lost
@@ -65,36 +61,10 @@ func (p *ADFSProvider) GetLoginURL(redirectURI, state, nonce string) string {
65 extraParams.Add("nonce", nonce)
61 extraParams.Add("nonce", nonce)
67 loginURL := makeLoginURL(p.Data(), redirectURI, url.QueryEscape(state), extraParams)
63 loginURL := makeLoginURL(p.Data(), redirectURI, url.QueryEscape(state), extraParams)
68− if p.SkipScope {
64+ if p.skipScope {
69 q := loginURL.Query()
65 q := loginURL.Query()
70 q.Del("scope")
66 q.Del("scope")
71 loginURL.RawQuery = q.Encode()
67 loginURL.RawQuery = q.Encode()
73 return loginURL.String()
69 return loginURL.String()
76−// EnrichSession to add email
77−func (p *ADFSProvider) EnrichSession(ctx context.Context, s *sessions.SessionState) error {
82− idToken, err := p.Verifier.Verify(ctx, s.IDToken)
88− c, err := p.getClaims(idToken)
91− return fmt.Errorf("couldn't extract claims from id_token (%v)", err)
96− err = errors.New("email not set")