Skip to content

Commit 6524c06

Browse files
authored
Merge pull request #94 from damienbod/base64code
Base64-code
2 parents 3d80c7f + 99336c3 commit 6524c06

7 files changed

Lines changed: 24 additions & 12 deletions

File tree

Changelog.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
[Readme](https://github.com/damienbod/IdentityServer4AspNetCoreIdentityTemplate/blob/master/README.md)
44

5+
2020-08-08 5.0.2
6+
- Encode PasswordResetToken and EmailConfirmationToken to base64URL enhancement
7+
- updated nuget packages
8+
- updated npm packages
9+
510
2020-07-03 5.0.1
611
- Updated to IdentityServer4 V4, updated packages
712
- Updated FIDO2 packages and code

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ dotnet new -i IdentityServer4AspNetCoreIdentityTemplate
5353
Locally built nupkg:
5454

5555
```
56-
dotnet new -i IdentityServer4AspNetCoreIdentityTemplate.5.0.1.nupkg
56+
dotnet new -i IdentityServer4AspNetCoreIdentityTemplate.5.0.2.nupkg
5757
```
5858

5959
Local folder:

content/IdentityServer4AspNetCoreIdentityTemplate.nuspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
33
<metadata>
44
<id>IdentityServer4AspNetCoreIdentityTemplate</id>
5-
<version>5.0.1</version>
5+
<version>5.0.2</version>
66
<title>IdentityServer4.Identity.Template</title>
77
<license type="file">LICENSE</license>
88
<description>
@@ -17,7 +17,7 @@
1717
<requireLicenseAcceptance>false</requireLicenseAcceptance>
1818
<copyright>2020 damienbod</copyright>
1919
<summary>This template provides a simle getting started for IdentityServer4 with Identity. Identity is Localized and the UI uses Bootstrap 4, Remove AllowAnonymous from the logout</summary>
20-
<releaseNotes>Updated to IdentityServer4 V4, updated packages</releaseNotes>
20+
<releaseNotes>Encode PasswordResetToken and EmailConfirmationToken to base64URL enhancement, updated nuget packages, updated npm packages</releaseNotes>
2121
<repository type="git" url="https://github.com/damienbod/IdentityServer4AspNetCoreIdentityTemplate" />
2222
<packageTypes>
2323
<packageType name="Template" />

content/StsServerIdentity/Controllers/AccountController.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
using StsServerIdentity.Resources;
2020
using System.Reflection;
2121
using Microsoft.AspNetCore.Authentication;
22+
using Microsoft.AspNetCore.WebUtilities;
23+
using System.Text;
24+
using System.Text.Encodings.Web;
2225

2326
namespace StsServerIdentity.Controllers
2427
{
@@ -266,9 +269,10 @@ public async Task<IActionResult> Register(RegisterViewModel model, string return
266269
if (result.Succeeded)
267270
{
268271
//var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
272+
// WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
269273
//var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme);
270274
//await _emailSender.SendEmailAsync(model.Email, "Confirm your account",
271-
// $"Please confirm your account by clicking this link: <a href='{callbackUrl}'>link</a>");
275+
// $"Please confirm your account by clicking this link: <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>link</a>");
272276
//await _signInManager.SignInAsync(user, isPersistent: false);
273277
//_logger.LogInformation(3, "User created a new account with password.");
274278
return RedirectToLocal(returnUrl);
@@ -408,6 +412,7 @@ public async Task<IActionResult> ConfirmEmail(string userId, string code)
408412
{
409413
return View("Error");
410414
}
415+
code = Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(code));
411416
var result = await _userManager.ConfirmEmailAsync(user, code);
412417
return View(result.Succeeded ? "ConfirmEmail" : "Error");
413418
}
@@ -442,11 +447,12 @@ public async Task<IActionResult> ForgotPassword(ForgotPasswordViewModel model)
442447
// For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=532713
443448
// Send an email with this link
444449
var code = await _userManager.GeneratePasswordResetTokenAsync(user);
450+
code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
445451
var callbackUrl = Url.Action("ResetPassword", "Account", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme);
446452
await _emailSender.SendEmail(
447453
model.Email,
448454
"Reset Password",
449-
$"Please reset your password by clicking here: {callbackUrl}",
455+
$"Please reset your password by clicking here: {HtmlEncoder.Default.Encode(callbackUrl)}",
450456
"Hi Sir");
451457

452458
return View("ForgotPasswordConfirmation");
@@ -491,7 +497,8 @@ public async Task<IActionResult> ResetPassword(ResetPasswordViewModel model)
491497
// Don't reveal that the user does not exist
492498
return RedirectToAction(nameof(AccountController.ResetPasswordConfirmation), "Account");
493499
}
494-
var result = await _userManager.ResetPasswordAsync(user, model.Code, model.Password);
500+
var code = Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(model.Code));
501+
var result = await _userManager.ResetPasswordAsync(user, code, model.Password);
495502
if (result.Succeeded)
496503
{
497504
return RedirectToAction(nameof(AccountController.ResetPasswordConfirmation), "Account");
@@ -550,6 +557,7 @@ public async Task<IActionResult> SendCode(SendCodeViewModel model)
550557
// Email used
551558
// Generate the token and send it
552559
var code = await _userManager.GenerateTwoFactorTokenAsync(user, model.SelectedProvider);
560+
code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
553561
if (string.IsNullOrWhiteSpace(code))
554562
{
555563
return View("Error");

content/StsServerIdentity/Controllers/ManageController.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
using System.Reflection;
1717
using System.Collections.Generic;
1818
using Newtonsoft.Json;
19+
using Microsoft.AspNetCore.WebUtilities;
1920

2021
namespace StsServerIdentity.Controllers
2122
{
@@ -135,12 +136,13 @@ public async Task<IActionResult> SendVerificationEmail(IndexViewModel model)
135136
}
136137

137138
var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
139+
code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
138140

139141
var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme);
140142
await _emailSender.SendEmail(
141143
model.Email,
142144
"StsServerIdentity Verification Email",
143-
$"Please verify by clicking here: {callbackUrl}",
145+
$"Please verify by clicking here: {HtmlEncoder.Default.Encode(callbackUrl)}",
144146
"Hi Sir");
145147

146148
StatusMessage = _sharedLocalizer["STATUS_UPDATE_PROFILE_EMAIL_SEND"];

content/StsServerIdentity/StsServerIdentity.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
<Project Sdk="Microsoft.NET.Sdk.Web">
22
<PropertyGroup>
33
<TargetFramework>netcoreapp3.1</TargetFramework>
4-
<Version>5.0.1</Version>
4+
<Version>5.0.2</Version>
55
<Description>IdentityServer4 template with ASP.NET Core 3.1 and ASP.NET Core Identity</Description>
66
<PackageProjectUrl>https://github.com/damienbod/IdentityServer4AspNetCoreIdentityTemplate</PackageProjectUrl>
77
<PackageIconUrl>http://www.gravatar.com/avatar/61d005637f57b5c3da8ba662cf04a9d6.png</PackageIconUrl>
88
<RepositoryUrl>https://github.com/damienbod/IdentityServer4AspNetCoreIdentityTemplate</RepositoryUrl>
99
<PackageLicenseFile>LICENSE</PackageLicenseFile>
1010
<PackageTags>oidc identityserver4 identity aspnetcore</PackageTags>
11-
<PackageReleaseNotes>Updated FIDO2, nuget packages, npm packages</PackageReleaseNotes>
11+
<PackageReleaseNotes>Updated nuget packages, npm packages, Encode PasswordResetToken and EmailConfirmationToken to base64URL enhancement</PackageReleaseNotes>
1212
</PropertyGroup>
1313
<ItemGroup>
1414
<PackageReference Include="BuildBundlerMinifier" Version="3.2.449" />

content/StsServerIdentity/Views/Account/ResetPasswordConfirmation.cshtml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,3 @@
77
<p>
88
@SharedLocalizer.GetLocalizedHtmlString("RESET_PASSWORD_YOUR_PASSWORD_HAS_BEEN_RESET") <a asp-controller="Account" asp-action="Login">@SharedLocalizer.GetLocalizedHtmlString("RESET_PASSWORD_CLICK_HERE_TO_LOGIN")</a>.
99
</p>
10-
<p>
11-
@SharedLocalizer.GetLocalizedHtmlString("RESET_PASSWORD_CONFIRMATION_TEXT1")<a asp-controller="Account" asp-action="Login">@SharedLocalizer.GetLocalizedHtmlString("RESET_PASSWORD_CONFIRMATION_CLICK_HERE")</a>.
12-
</p>

0 commit comments

Comments
 (0)