irc-netcore-api/IRaCIS.Core.Application/Service/MinimalApiService/OAuth/LogotoParams.cs

121 lines
5.1 KiB
C#

using Microsoft.IdentityModel.Protocols.OpenIdConnect;
using System.Text.Json.Serialization;
namespace IRaCIS.Core.Application.Service.OAuth;
public static class LogtoParameters
{
/// <summary>
/// The token names used by Cookie and OpenID Connect middleware to store and retrieve tokens from
/// Logto OpenID Connect provider.
/// <br/>
/// See <see href="https://github.com/dotnet/aspnetcore/blob/4a9118c674a798aaf6379b4b7b2d8787bc688f96/src/Security/Authentication/OpenIdConnect/src/OpenIdConnectHandler.cs#L994-L1035">tokens that are stored by OpenID Connect middleware</see> for more details.
/// </summary>
public static class Tokens
{
public const string AccessToken = OpenIdConnectParameterNames.AccessToken;
public const string ExpiresAt = "expires_at";
public const string AccessTokenForResource = $"{AccessToken}.resource";
public const string ExpiresAtForResource = $"{ExpiresAt}.resource";
public const string RefreshToken = OpenIdConnectParameterNames.RefreshToken;
public const string IdToken = OpenIdConnectParameterNames.IdToken;
public const string TokenType = OpenIdConnectParameterNames.TokenType;
}
/// <summary>
/// The scope names used by Logto OpenID Connect provider to request for user information.
/// </summary>
public static class Scopes
{
/// <summary>
/// The scope name for requesting user's email.
/// Logto will issue two claims to the ID token: <c>email</c> and <c>email_verified</c>.
/// </summary>
public const string Email = "email";
/// <summary>
/// The scope name for requesting user's phone number.
/// Logto will issue two claims to the ID token: <c>phone</c> and <c>phone_verified</c>.
/// </summary>
public const string Phone = "phone";
/// <summary>
/// The scope name for requesting user's custom data.
/// Logto will issue a claim to the response of the <c>userinfo</c> endpoint: <c>custom_data</c>.
/// <br/>
/// Note that when requesting this scope, you must set <see cref="LogtoOptions.GetClaimsFromUserInfoEndpoint"/> to <c>true</c>.
/// </summary>
public const string CustomData = "custom_data";
/// <summary>
/// The scope name for requesting user's identities.
/// Logto will issue a claim to the response of the <c>userinfo</c> endpoint: <c>identities</c>.
/// <br/>
/// Note that when requesting this scope, you must set <see cref="LogtoOptions.GetClaimsFromUserInfoEndpoint"/> to <c>true</c>.
/// </summary>
public const string Identities = "identities";
}
/// <summary>
/// The claim names used by Logto OpenID Connect provider for ID token and userinfo endpoint.
/// </summary>
public static class Claims
{
/// <summary>
/// The claim name for the issuer identifier for whom issued the token.
/// </summary>
public const string Issuer = "iss";
/// <summary>
/// The claim name for the subject identifier for whom the token is intended (user ID).
/// </summary>
public const string Subject = "sub";
/// <summary>
/// The claim name for the audience that the token is intended for, which is the client ID.
/// </summary>
public const string Audience = "aud";
/// <summary>
/// The claim name for the expiration time of the token (in seconds).
/// </summary>
public const string Expiration = "exp";
/// <summary>
/// The claim name for the time at which the token was issued (in seconds).
/// </summary>
public const string IssuedAt = "iat";
/// <summary>
/// The claim name for the user's full name.
/// </summary>
public const string Name = "name";
/// <summary>
/// The claim name for user's username.
/// </summary>
public const string Username = "username";
/// <summary>
/// The claim name for user's profile picture URL.
/// </summary>
public const string Picture = "picture";
/// <summary>
/// The claim name for user's email.
/// </summary>
public const string Email = "email";
/// <summary>
/// The claim name for user's email verification status.
/// </summary>
public const string EmailVerified = "email_verified";
/// <summary>
/// The claim name for user's phone number.
/// </summary>
public const string PhoneNumber = "phone_number";
/// <summary>
/// The claim name for user's phone number verification status.
/// </summary>
public const string PhoneNumberVerified = "phone_number_verified";
/// <summary>
/// The claim name for user's custom data.
/// </summary>
public const string CustomData = "custom_data";
/// <summary>
/// The claim name for user's identities.
/// </summary>
public const string Identities = "identities";
}
}