git.iko.soy/typeable/oauth2-proxy
on master help sign in
Move azure specific resource parameter handling into azure provider
commitfde09bea4ec847d4611836d657215cfc60dbc2ef authorAlexander Block <ablock84@gmail.com> dateMon 14 Sep 2020, 13:48 (6 years ago) parent97e95fd
4 files changed+16−21
providers/azure.go+9 providers/azure_test.go+7 providers/provider_default.go−3 providers/provider_default_test.go−18
providers/azure.go+9
@@ -210,3 +210,12 @@ func (p *AzureProvider) GetEmailAddress(ctx context.Context, s *sessions.Session
210210
211211 return email, err
212212}
213+
214+func (p *AzureProvider) GetLoginURL(redirectURI, state string) string {
215+ a, params := DefaultGetLoginURL(p.ProviderData, redirectURI, state)
216+ if p.ProtectedResource != nil && p.ProtectedResource.String() != "" {
217+ params.Add("resource", p.ProtectedResource.String())
218+ }
219+ a.RawQuery = params.Encode()
220+ return a.String()
221+}
providers/azure_test.go+7
@@ -213,3 +213,10 @@ func TestAzureProviderRedeemReturnsIdToken(t *testing.T) {
213213 assert.Equal(t, timestamp, s.ExpiresOn.UTC())
214214 assert.Equal(t, "refresh1234", s.RefreshToken)
215215}
216+
217+func TestAzureProviderProtectedResourceConfigured(t *testing.T) {
218+ p := testAzureProvider("")
219+ p.ProtectedResource, _ = url.Parse("http://my.resource.test")
220+ result := p.GetLoginURL("https://my.test.app/oauth", "")
221+ assert.Contains(t, result, "resource="+url.QueryEscape("http://my.resource.test"))
222+}
providers/provider_default.go−3
@@ -89,9 +89,6 @@ func DefaultGetLoginURL(p *ProviderData, redirectURI, state string) (url.URL, ur
8989 params.Set("client_id", p.ClientID)
9090 params.Set("response_type", "code")
9191 params.Add("state", state)
92− if p.ProtectedResource != nil && p.ProtectedResource.String() != "" {
93− params.Add("resource", p.ProtectedResource.String())
94− }
9592 return a, params
9693}
9794
providers/provider_default_test.go−18
@@ -47,21 +47,3 @@ func TestAcrValuesConfigured(t *testing.T) {
4747 result := p.GetLoginURL("https://my.test.app/oauth", "")
4848 assert.Contains(t, result, "acr_values=testValue")
4949}
50−
51−func TestProtectedResourceConfigured(t *testing.T) {
52− p := &ProviderData{
53− LoginURL: &url.URL{
54− Scheme: "http",
55− Host: "my.test.idp",
56− Path: "/oauth/authorize",
57− },
58− AcrValues: "testValue",
59− ProtectedResource: &url.URL{
60− Scheme: "http",
61− Host: "my.resource.test",
62− },
63− }
64−
65− result := p.GetLoginURL("https://my.test.app/oauth", "")
66− assert.Contains(t, result, "resource="+url.QueryEscape("http://my.resource.test"))
67−}