Skip to content

Commit 7aa465d

Browse files
authored
Update OAuth endpoints #327 (#380)
1 parent f6bd1c1 commit 7aa465d

File tree

7 files changed

+22
-12
lines changed

7 files changed

+22
-12
lines changed

src/Microsoft.Owin.Security.Facebook/Constants.cs

+4-3
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ internal static class Constants
77
{
88
public const string DefaultAuthenticationType = "Facebook";
99

10-
internal const string AuthorizationEndpoint = "https://www.facebook.com/v2.8/dialog/oauth";
11-
internal const string TokenEndpoint = "https://graph.facebook.com/v2.8/oauth/access_token";
12-
internal const string UserInformationEndpoint = "https://graph.facebook.com/v2.8/me";
10+
// https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow#login
11+
internal const string AuthorizationEndpoint = "https://www.facebook.com/v8.0/dialog/oauth";
12+
internal const string TokenEndpoint = "https://graph.facebook.com/v8.0/oauth/access_token";
13+
internal const string UserInformationEndpoint = "https://graph.facebook.com/v8.0/me";
1314
}
1415
}

src/Microsoft.Owin.Security.Google/Constants.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ internal static class Constants
77
{
88
internal const string DefaultAuthenticationType = "Google";
99

10+
// https://developers.google.com/identity/protocols/oauth2/web-server#httprest
1011
internal const string AuthorizationEndpoint = "https://accounts.google.com/o/oauth2/v2/auth";
11-
internal const string TokenEndpoint = "https://www.googleapis.com/oauth2/v4/token";
12+
internal const string TokenEndpoint = "https://oauth2.googleapis.com/token";
1213
internal const string UserInformationEndpoint = "https://www.googleapis.com/oauth2/v2/userinfo";
1314
}
1415
}

src/Microsoft.Owin.Security.MicrosoftAccount/Constants.cs

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ internal static class Constants
77
{
88
internal const string DefaultAuthenticationType = "Microsoft";
99

10+
// https://developer.microsoft.com/en-us/graph/docs/concepts/auth_v2_user
1011
internal const string AuthorizationEndpoint = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize";
1112
internal const string TokenEndpoint = "https://login.microsoftonline.com/common/oauth2/v2.0/token";
1213
internal const string UserInformationEndpoint = "https://graph.microsoft.com/v1.0/me";

src/Microsoft.Owin.Security.Twitter/TwitterAuthenticationHandler.cs

+3
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,11 @@ internal class TwitterAuthenticationHandler : AuthenticationHandler<TwitterAuthe
2121
{
2222
private static readonly DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
2323
private const string StateCookie = "__TwitterState";
24+
// https://developer.twitter.com/en/docs/basics/authentication/api-reference/request_token
2425
private const string RequestTokenEndpoint = "https://api.twitter.com/oauth/request_token";
26+
// https://developer.twitter.com/en/docs/basics/authentication/api-reference/authenticate
2527
private const string AuthenticationEndpoint = "https://api.twitter.com/oauth/authenticate?oauth_token=";
28+
// https://developer.twitter.com/en/docs/basics/authentication/api-reference/access_token
2629
private const string AccessTokenEndpoint = "https://api.twitter.com/oauth/access_token";
2730

2831
private readonly HttpClient _httpClient;

src/Microsoft.Owin/Infrastructure/OwinHelpers.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -820,7 +820,7 @@ internal static IFormCollection GetForm(string text)
820820
{
821821
IDictionary<string, string[]> form = new Dictionary<string, string[]>(StringComparer.OrdinalIgnoreCase);
822822
var accumulator = new Dictionary<string, List<string>>(StringComparer.OrdinalIgnoreCase);
823-
ParseDelimited(text, new[] { '&' }, AppendItemCallback, decodePlus: false, decodeKey: true, state: accumulator);
823+
ParseDelimited(text, new[] { '&' }, AppendItemCallback, decodePlus: true, decodeKey: true, state: accumulator);
824824
foreach (var kv in accumulator)
825825
{
826826
form.Add(kv.Key, kv.Value.ToArray());

tests/Katana.Sandbox.WebServer/Startup.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -136,13 +136,13 @@ public void Configuration(IAppBuilder app)
136136
app.UseOpenIdConnectAuthentication(new Microsoft.Owin.Security.OpenIdConnect.OpenIdConnectAuthenticationOptions()
137137
{
138138
// https://github.com/IdentityServer/IdentityServer4.Demo/blob/master/src/IdentityServer4Demo/Config.cs
139-
ClientId = "server.hybrid",
139+
ClientId = "hybrid",
140140
ClientSecret = "secret", // for code flow
141141
Authority = "https://demo.identityserver.io/",
142+
RedirectUri = "https://localhost:44318/signin-oidc",
142143
/*
143144
Authority = Environment.GetEnvironmentVariable("oidc:authority"),
144145
ClientId = Environment.GetEnvironmentVariable("oidc:clientid"),
145-
RedirectUri = "https://localhost:44318/",
146146
ClientSecret = Environment.GetEnvironmentVariable("oidc:clientsecret"),*/
147147
// CookieManager = new SystemWebCookieManager(),
148148
CookieManager = new SameSiteCookieManager(),

tests/Microsoft.Owin.Tests/FormsTests.cs

+9-5
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public class FormsTests
1414
private static readonly string[] RawValues = new[] { "v1", "v2, v3", "\"v4, b\"", "v5, v6", "v7", };
1515
private const string JoinedValues = "v1,v2, v3,\"v4, b\",v5, v6,v7";
1616

17-
private const string OriginalFormsString = "q1=v1&q2=v2,b&q3=v3&q3=v4&q4&q5=v5&q5=v+5";
17+
private const string OriginalFormsString = "q1=v1&q2=v2,b&q3=v3&q3=v4&q4&q5=v5&q5=v5&q+6=v+6";
1818

1919
[Fact]
2020
public void ParseForm()
@@ -30,7 +30,8 @@ public void ParseForm()
3030
Assert.Equal("v2,b", form.Get("Q2"));
3131
Assert.Equal("v3,v4", form.Get("q3"));
3232
Assert.Null(form.Get("q4"));
33-
Assert.Equal("v5,v+5", form.Get("Q5"));
33+
Assert.Equal("v5,v5", form.Get("Q5"));
34+
Assert.Equal("v 6", form.Get("Q 6"));
3435
Assert.True(stream.CanRead);
3536
}
3637

@@ -89,7 +90,8 @@ public void ReadFromStream()
8990
Assert.Equal("v2,b", form.Get("Q2"));
9091
Assert.Equal("v3,v4", form.Get("q3"));
9192
Assert.Null(form.Get("q4"));
92-
Assert.Equal("v5,v+5", form.Get("Q5"));
93+
Assert.Equal("v5,v5", form.Get("Q5"));
94+
Assert.Equal("v 6", form.Get("Q 6"));
9395
}
9496

9597
[Fact]
@@ -107,14 +109,16 @@ public void ReadFromStreamTwice()
107109
Assert.Equal("v2,b", form.Get("Q2"));
108110
Assert.Equal("v3,v4", form.Get("q3"));
109111
Assert.Null(form.Get("q4"));
110-
Assert.Equal("v5,v+5", form.Get("Q5"));
112+
Assert.Equal("v5,v5", form.Get("Q5"));
113+
Assert.Equal("v 6", form.Get("Q 6"));
111114

112115
form = request.ReadFormAsync().Result;
113116
Assert.Equal("v1", form.Get("q1"));
114117
Assert.Equal("v2,b", form.Get("Q2"));
115118
Assert.Equal("v3,v4", form.Get("q3"));
116119
Assert.Null(form.Get("q4"));
117-
Assert.Equal("v5,v+5", form.Get("Q5"));
120+
Assert.Equal("v5,v5", form.Get("Q5"));
121+
Assert.Equal("v 6", form.Get("Q 6"));
118122
}
119123
}
120124
}

0 commit comments

Comments
 (0)