diff options
Diffstat (limited to 'BackEnd/Timeline/Auth')
-rw-r--r-- | BackEnd/Timeline/Auth/MyAuthenticationHandler.cs | 29 | ||||
-rw-r--r-- | BackEnd/Timeline/Auth/Resource.Designer.cs | 294 | ||||
-rw-r--r-- | BackEnd/Timeline/Auth/Resource.resx | 17 |
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 "{0}". 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 "{0}". 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 |