Skip to content

Commit b3a17d6

Browse files
authored
Merge pull request #187 from docusign/feature/added-pkce-auth
Added pkce auth
2 parents 216102d + 3c99d35 commit b3a17d6

File tree

1 file changed

+28
-5
lines changed

1 file changed

+28
-5
lines changed

launcher-csharp/Startup.cs

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,13 @@ namespace DocuSign.CodeExamples
1111
using System.Net.Http;
1212
using System.Net.Http.Headers;
1313
using System.Security.Claims;
14+
using System.Security.Cryptography;
15+
using System.Text;
1416
using System.Text.Json;
1517
using System.Text.RegularExpressions;
1618
using System.Threading.Tasks;
1719
using System.Web;
20+
using Azure.Core;
1821
using DocuSign.CodeExamples.Common;
1922
using DocuSign.CodeExamples.Models;
2023
using DocuSign.Rooms.Api;
@@ -179,14 +182,17 @@ public void ConfigureServices(IServiceCollection services)
179182
options.ClaimActions.MapJsonKey("access_token", "access_token");
180183
options.ClaimActions.MapJsonKey("refresh_token", "refresh_token");
181184
options.ClaimActions.MapJsonKey("expires_in", "expires_in");
185+
182186
options.Events = new OAuthEvents
183187
{
184188
OnRedirectToAuthorizationEndpoint = redirectContext =>
185189
{
186190
List<string> scopesForCurrentApi = this.apiTypes.GetValueOrDefault(Enum.Parse<ExamplesApiType>(this.Configuration["API"]));
187-
188191
redirectContext.RedirectUri = this.UpdateRedirectUriScopes(redirectContext.RedirectUri, scopesForCurrentApi);
189192

193+
redirectContext.Options.UsePkce = this.Configuration["PkceFailed"] == null;
194+
195+
this.Configuration["RedirectUrl"] = redirectContext.RedirectUri;
190196
redirectContext.HttpContext.Response.Redirect(redirectContext.RedirectUri);
191197
return Task.FromResult(0);
192198
},
@@ -206,11 +212,28 @@ public void ConfigureServices(IServiceCollection services)
206212
context.RunClaimActions(payload.RootElement);
207213
}
208214
},
209-
OnRemoteFailure = context =>
215+
OnRemoteFailure = async context =>
210216
{
211-
context.HandleResponse();
212-
context.Response.Redirect("/Home/Error?message=" + context.Failure?.Message);
213-
return Task.FromResult(0);
217+
if (this.Configuration["PkceFailed"] != null)
218+
{
219+
context.HandleResponse();
220+
context.Response.Redirect("/Home/Error?message=" + context.Failure?.Message);
221+
}
222+
else
223+
{
224+
var redirectContext = new RedirectContext<OAuthOptions>(
225+
context.HttpContext,
226+
context.Scheme,
227+
options,
228+
context.Properties,
229+
this.Configuration["RedirectUrl"]);
230+
231+
this.Configuration["PkceFailed"] = "true";
232+
233+
await options.Events.OnRedirectToAuthorizationEndpoint(redirectContext);
234+
235+
context.HandleResponse();
236+
}
214237
},
215238
};
216239
});

0 commit comments

Comments
 (0)