Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support prompt in addition to approval-prompt #54

Merged
merged 1 commit into from
May 24, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ An example [oauth2_proxy.cfg](contrib/oauth2_proxy.cfg.example) config file is i

```
Usage of oauth2_proxy:
-approval-prompt string: OAuth approval_prompt (default "force")
-approval-prompt string: OAuth approval_prompt (see also: prompt) (default "force")
-authenticated-emails-file string: authenticate against emails via file (one per line)
-azure-tenant string: go to a tenant-specific or common (tenant-independent) endpoint. (default "common")
-banner string: custom sign-in banner text/html. Use "-" to disable default banner.
Expand Down Expand Up @@ -303,6 +303,7 @@ Usage of oauth2_proxy:
-pass-host-header: pass the request Host Header to upstream (default true)
-pass-user-headers: pass X-Forwarded-User and X-Forwarded-Email information to upstream (default true)
-profile-url string: Profile access endpoint
-prompt string: OIDC prompt (overrides approval-prompt)
-provider string: OAuth provider (default "google")
-proxy-prefix string: the url root path that this proxy should be nested under (e.g. /<oauth2>/sign_in) (default "/oauth2")
-proxy-websockets: enables WebSocket proxying (default true)
Expand Down
3 changes: 2 additions & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,8 @@ func mainFlagSet() *flag.FlagSet {
flagSet.String("resource", "", "The resource that is protected (Azure AD only)")
flagSet.String("validate-url", "", "Access token validation endpoint")
flagSet.String("scope", "", "OAuth scope specification")
flagSet.String("approval-prompt", "force", "OAuth approval_prompt")
flagSet.String("prompt", "", "OIDC prompt (overrides approval-prompt)")
flagSet.String("approval-prompt", "force", "OAuth approval_prompt (see also: prompt)")

flagSet.String("signature-key", "", "GAP-Signature request signature key (algorithm:secretkey)")

Expand Down
5 changes: 4 additions & 1 deletion options.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,8 @@ type Options struct {
ProtectedResource string `flag:"resource" cfg:"resource"`
ValidateURL string `flag:"validate-url" cfg:"validate_url"`
Scope string `flag:"scope" cfg:"scope"`
ApprovalPrompt string `flag:"approval-prompt" cfg:"approval_prompt"`
Prompt string `flag:"prompt" cfg:"prompt"`
ApprovalPrompt string `flag:"approval-prompt" cfg:"approval_prompt"` // Deprecated by OIDC 1.0

XHeaders bool `flag:"xheaders" cfg:"xheaders"`
RequestLogging bool `flag:"request-logging" cfg:"request_logging"`
Expand Down Expand Up @@ -119,6 +120,7 @@ func NewOptions() *Options {
PassUserHeaders: true,
PassAccessToken: false,
PassHostHeader: true,
Prompt: "", // Change to "login" when ApprovalPrompt deprecated/removed
ApprovalPrompt: "force",
XHeaders: true,
RequestLogging: true,
Expand Down Expand Up @@ -235,6 +237,7 @@ func parseProviderInfo(o *Options, msgs []string) []string {
Scope: o.Scope,
ClientID: o.ClientID,
ClientSecret: o.ClientSecret,
Prompt: o.Prompt,
ApprovalPrompt: o.ApprovalPrompt,
}
p.LoginURL, msgs = parseURL(o.LoginURL, "login", msgs)
Expand Down
1 change: 1 addition & 0 deletions providers/provider_data.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ type ProviderData struct {
ProtectedResource *url.URL
ValidateURL *url.URL
Scope string
Prompt string
ApprovalPrompt string
}

Expand Down
6 changes: 5 additions & 1 deletion providers/provider_default.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,11 @@ func (p *ProviderData) GetLoginURL(redirectURI, state string) string {
a = *p.LoginURL
params, _ := url.ParseQuery(a.RawQuery)
params.Set("redirect_uri", redirectURI)
params.Set("approval_prompt", p.ApprovalPrompt)
if p.Prompt != "" {
params.Set("prompt", p.Prompt)
} else { // Legacy variant of the prompt param:
params.Set("approval_prompt", p.ApprovalPrompt)
}
params.Add("scope", p.Scope)
params.Set("client_id", p.ClientID)
params.Set("response_type", "code")
Expand Down