Fix incorrect "state" header

This commit is contained in:
Pavel Sorokin 2017-06-26 06:21:38 +00:00
parent 47fe902cbc
commit b801997624
2 changed files with 14 additions and 8 deletions

View File

@ -109,7 +109,7 @@ func NewOptions() *Options {
FilterGroups: "",
PassAccessToken: false,
PassHostHeader: true,
ApprovalPrompt: "force",
ApprovalPrompt: "",
RequestLogging: true,
}
}

View File

@ -37,10 +37,10 @@ func NewAzureProvider(p *ProviderData) *AzureProvider {
p.Scope = "openid"
}
if p.ApprovalPrompt == "" || p.ApprovalPrompt == "force" {
if p.ApprovalPrompt == "force" {
p.ApprovalPrompt = "consent"
}
log.Printf("Approval prompt: '%s'", p.ApprovalPrompt)
return &AzureProvider{ProviderData: p}
}
@ -194,7 +194,7 @@ func (p *AzureProvider) GetGroups(s *SessionState, f string) (string, error) {
return strings.Join(groups, "|"), nil
}
func (p *AzureProvider) GetLoginURL(redirectURI, finalRedirect string) string {
func (p *AzureProvider) GetLoginURL(redirectURI, state string) string {
var a url.URL
a = *p.LoginURL
params, _ := url.ParseQuery(a.RawQuery)
@ -203,17 +203,23 @@ func (p *AzureProvider) GetLoginURL(redirectURI, finalRedirect string) string {
params.Set("redirect_uri", redirectURI)
params.Set("response_mode", "form_post")
params.Add("scope", p.Scope)
params.Add("state", state)
params.Set("prompt", p.ApprovalPrompt)
params.Set("nonce", "FIXME")
if strings.HasPrefix(finalRedirect, "/") {
params.Add("state", finalRedirect)
}
a.RawQuery = params.Encode()
return a.String()
}
func (p *AzureProvider) SetGroupRestriction(groups []string) {
if len(groups) == 1 && strings.Index(groups[0], "|") >= 0 {
p.PermittedGroups = strings.Split(groups[0], "|")
} else {
p.PermittedGroups = groups
}
log.Printf("Set group restrictions. Allowed groups are:")
for _, pGroup := range p.PermittedGroups {
log.Printf("\t'%s'", pGroup)
}
}
func (p *AzureProvider) ValidateGroup(s *SessionState) bool {