121 lines
5.1 KiB
C#
121 lines
5.1 KiB
C#
using Microsoft.IdentityModel.Protocols.OpenIdConnect;
|
|
using System.Text.Json.Serialization;
|
|
|
|
namespace IRaCIS.Core.API.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";
|
|
}
|
|
} |