aboutsummaryrefslogtreecommitdiff
path: root/BackEnd/Timeline/Auth
diff options
context:
space:
mode:
Diffstat (limited to 'BackEnd/Timeline/Auth')
-rw-r--r--BackEnd/Timeline/Auth/MyAuthenticationHandler.cs29
-rw-r--r--BackEnd/Timeline/Auth/Resource.Designer.cs294
-rw-r--r--BackEnd/Timeline/Auth/Resource.resx17
3 files changed, 147 insertions, 193 deletions
diff --git a/BackEnd/Timeline/Auth/MyAuthenticationHandler.cs b/BackEnd/Timeline/Auth/MyAuthenticationHandler.cs
index 016cc938..740f5aee 100644
--- a/BackEnd/Timeline/Auth/MyAuthenticationHandler.cs
+++ b/BackEnd/Timeline/Auth/MyAuthenticationHandler.cs
@@ -41,11 +41,8 @@ namespace Timeline.Auth
{
return e switch
{
- UserTokenTimeExpiredException => ErrorCodes.Common.Token.TimeExpired,
- UserTokenVersionExpiredException => ErrorCodes.Common.Token.VersionExpired,
- UserTokenBadFormatException => ErrorCodes.Common.Token.BadFormat,
- UserTokenUserNotExistException => ErrorCodes.Common.Token.UserNotExist,
- _ => ErrorCodes.Common.Token.Unknown
+ UserTokenExpiredException => ErrorCodes.Common.Token.TimeExpired,
+ _ => ErrorCodes.Common.Token.Invalid
};
}
@@ -53,25 +50,22 @@ namespace Timeline.Auth
{
return errorCode switch
{
- ErrorCodes.Common.Token.TimeExpired => Resource.MessageTokenTimeExpired,
- ErrorCodes.Common.Token.VersionExpired => Resource.MessageTokenVersionExpired,
- ErrorCodes.Common.Token.BadFormat => Resource.MessageTokenBadFormat,
- ErrorCodes.Common.Token.UserNotExist => Resource.MessageTokenUserNotExist,
- _ => Resource.MessageTokenUnknownError
+ ErrorCodes.Common.Token.TimeExpired => Resource.MessageTokenExpired,
+ _ => Resource.MessageTokenInvalid
};
}
private readonly ILogger<MyAuthenticationHandler> _logger;
- private readonly IUserTokenManager _userTokenManager;
+ private readonly IUserTokenService _userTokenService;
private readonly IUserPermissionService _userPermissionService;
private readonly IOptionsMonitor<JsonOptions> _jsonOptions;
- public MyAuthenticationHandler(IOptionsMonitor<MyAuthenticationOptions> options, ILoggerFactory logger, UrlEncoder encoder, ISystemClock clock, IUserTokenManager userTokenManager, IUserPermissionService userPermissionService, IOptionsMonitor<JsonOptions> jsonOptions)
+ public MyAuthenticationHandler(IOptionsMonitor<MyAuthenticationOptions> options, ILoggerFactory logger, UrlEncoder encoder, ISystemClock clock, IUserTokenService userTokenService, IUserPermissionService userPermissionService, IOptionsMonitor<JsonOptions> jsonOptions)
: base(options, logger, encoder, clock)
{
_logger = logger.CreateLogger<MyAuthenticationHandler>();
- _userTokenManager = userTokenManager;
+ _userTokenService = userTokenService;
_userPermissionService = userPermissionService;
_jsonOptions = jsonOptions;
}
@@ -126,13 +120,12 @@ namespace Timeline.Auth
try
{
- var user = await _userTokenManager.VerifyTokenAsync(token);
+ var userTokenInfo = await _userTokenService.ValidateTokenAsync(token);
var identity = new ClaimsIdentity(AuthenticationConstants.Scheme);
- identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.Id.ToString(CultureInfo.InvariantCulture), ClaimValueTypes.Integer64));
- identity.AddClaim(new Claim(identity.NameClaimType, user.Username, ClaimValueTypes.String));
+ identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, userTokenInfo.UserId.ToString(CultureInfo.InvariantCulture), ClaimValueTypes.Integer64));
- var permissions = await _userPermissionService.GetPermissionsOfUserAsync(user.Id);
+ var permissions = await _userPermissionService.GetPermissionsOfUserAsync(userTokenInfo.UserId);
identity.AddClaims(permissions.Select(permission => new Claim(AuthenticationConstants.PermissionClaimName, permission.ToString(), ClaimValueTypes.String)));
var principal = new ClaimsPrincipal();
@@ -161,7 +154,7 @@ namespace Timeline.Auth
if (properties.Items.TryGetValue(TokenErrorCodeKey, out var tokenErrorCode))
{
if (!int.TryParse(tokenErrorCode, out var errorCode))
- errorCode = ErrorCodes.Common.Token.Unknown;
+ throw new Exception("A logic error: failed to parse token error code.");
body = new CommonResponse(errorCode, GetTokenErrorMessageFromErrorCode(errorCode));
}
else
diff --git a/BackEnd/Timeline/Auth/Resource.Designer.cs b/BackEnd/Timeline/Auth/Resource.Designer.cs
index 05394551..6175b266 100644
--- a/BackEnd/Timeline/Auth/Resource.Designer.cs
+++ b/BackEnd/Timeline/Auth/Resource.Designer.cs
@@ -1,162 +1,132 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace Timeline.Auth {
- using System;
-
-
- /// <summary>
- /// A strongly-typed resource class, for looking up localized strings, etc.
- /// </summary>
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Resource {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resource() {
- }
-
- /// <summary>
- /// Returns the cached ResourceManager instance used by this class.
- /// </summary>
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Timeline.Auth.Resource", typeof(Resource).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- /// <summary>
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- /// </summary>
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to User identitifier claim is of bad format..
- /// </summary>
- internal static string ExceptionUserIdentifierClaimBadFormat {
- get {
- return ResourceManager.GetString("ExceptionUserIdentifierClaimBadFormat", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Token is found in authorization header. Token is {0} ..
- /// </summary>
- internal static string LogTokenFoundInHeader {
- get {
- return ResourceManager.GetString("LogTokenFoundInHeader", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Token is found in query param with key &quot;{0}&quot;. Token is {1} ..
- /// </summary>
- internal static string LogTokenFoundInQuery {
- get {
- return ResourceManager.GetString("LogTokenFoundInQuery", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to No jwt token is found..
- /// </summary>
- internal static string LogTokenNotFound {
- get {
- return ResourceManager.GetString("LogTokenNotFound", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to A jwt token validation failed. Error reason: {0}.
- /// </summary>
- internal static string LogTokenValidationFail {
- get {
- return ResourceManager.GetString("LogTokenValidationFail", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to You must use a token to authenticate to access this resource..
- /// </summary>
- internal static string MessageNoToken {
- get {
- return ResourceManager.GetString("MessageNoToken", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The token is of bad format. It might not be created by this server..
- /// </summary>
- internal static string MessageTokenBadFormat {
- get {
- return ResourceManager.GetString("MessageTokenBadFormat", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The token is out of date and expired. Please create a new one..
- /// </summary>
- internal static string MessageTokenTimeExpired {
- get {
- return ResourceManager.GetString("MessageTokenTimeExpired", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to A unknown error occured when verify token..
- /// </summary>
- internal static string MessageTokenUnknownError {
- get {
- return ResourceManager.GetString("MessageTokenUnknownError", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The owner of the token does not exist. It might have been deleted..
- /// </summary>
- internal static string MessageTokenUserNotExist {
- get {
- return ResourceManager.GetString("MessageTokenUserNotExist", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The token is of old version and expired. Please create a new one..
- /// </summary>
- internal static string MessageTokenVersionExpired {
- get {
- return ResourceManager.GetString("MessageTokenVersionExpired", resourceCulture);
- }
- }
- }
-}
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Timeline.Auth {
+ using System;
+
+
+ /// <summary>
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ /// This class was generated by MSBuild using the GenerateResource task.
+ /// To add or remove a member, edit your .resx file then rerun MSBuild.
+ /// </summary>
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Build.Tasks.StronglyTypedResourceBuilder", "15.1.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resource {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resource() {
+ }
+
+ /// <summary>
+ /// Returns the cached ResourceManager instance used by this class.
+ /// </summary>
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Timeline.Auth.Resource", typeof(Resource).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ /// <summary>
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ /// </summary>
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to User identitifier claim is of bad format..
+ /// </summary>
+ internal static string ExceptionUserIdentifierClaimBadFormat {
+ get {
+ return ResourceManager.GetString("ExceptionUserIdentifierClaimBadFormat", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Token is found in authorization header. Token is {0} ..
+ /// </summary>
+ internal static string LogTokenFoundInHeader {
+ get {
+ return ResourceManager.GetString("LogTokenFoundInHeader", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Token is found in query param with key &quot;{0}&quot;. Token is {1} ..
+ /// </summary>
+ internal static string LogTokenFoundInQuery {
+ get {
+ return ResourceManager.GetString("LogTokenFoundInQuery", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to No jwt token is found..
+ /// </summary>
+ internal static string LogTokenNotFound {
+ get {
+ return ResourceManager.GetString("LogTokenNotFound", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to A jwt token validation failed. Error reason: {0}.
+ /// </summary>
+ internal static string LogTokenValidationFail {
+ get {
+ return ResourceManager.GetString("LogTokenValidationFail", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to You must use a token to authenticate to access this resource..
+ /// </summary>
+ internal static string MessageNoToken {
+ get {
+ return ResourceManager.GetString("MessageNoToken", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to The token is expired. Please create a new one..
+ /// </summary>
+ internal static string MessageTokenExpired {
+ get {
+ return ResourceManager.GetString("MessageTokenExpired", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to The token is invalid..
+ /// </summary>
+ internal static string MessageTokenInvalid {
+ get {
+ return ResourceManager.GetString("MessageTokenInvalid", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/BackEnd/Timeline/Auth/Resource.resx b/BackEnd/Timeline/Auth/Resource.resx
index 88cdbd6b..a2183290 100644
--- a/BackEnd/Timeline/Auth/Resource.resx
+++ b/BackEnd/Timeline/Auth/Resource.resx
@@ -135,19 +135,10 @@
<data name="MessageNoToken" xml:space="preserve">
<value>You must use a token to authenticate to access this resource.</value>
</data>
- <data name="MessageTokenBadFormat" xml:space="preserve">
- <value>The token is of bad format. It might not be created by this server.</value>
+ <data name="MessageTokenInvalid" xml:space="preserve">
+ <value>The token is invalid.</value>
</data>
- <data name="MessageTokenTimeExpired" xml:space="preserve">
- <value>The token is out of date and expired. Please create a new one.</value>
- </data>
- <data name="MessageTokenUnknownError" xml:space="preserve">
- <value>A unknown error occured when verify token.</value>
- </data>
- <data name="MessageTokenUserNotExist" xml:space="preserve">
- <value>The owner of the token does not exist. It might have been deleted.</value>
- </data>
- <data name="MessageTokenVersionExpired" xml:space="preserve">
- <value>The token is of old version and expired. Please create a new one.</value>
+ <data name="MessageTokenExpired" xml:space="preserve">
+ <value>The token is expired. Please create a new one.</value>
</data>
</root> \ No newline at end of file