implemented Discord OAuth2

This commit is contained in:
t.ruspekhofer 2022-02-13 20:40:15 +01:00
parent 9365e22874
commit dbf1be4c5d
18 changed files with 195 additions and 133 deletions

View file

@ -0,0 +1,33 @@
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.OAuth;
using Microsoft.AspNetCore.Http;
using System.Security.Claims;
namespace Discord.OAuth2
{
/// <summary> Configuration options for <see cref="DiscordHandler"/>. </summary>
public class DiscordOptions : OAuthOptions
{
/// <summary> Initializes a new <see cref="DiscordOptions"/>. </summary>
public DiscordOptions()
{
CallbackPath = new PathString("/signin-discord");
AuthorizationEndpoint = DiscordDefaults.AuthorizationEndpoint;
TokenEndpoint = DiscordDefaults.TokenEndpoint;
UserInformationEndpoint = DiscordDefaults.UserInformationEndpoint;
Scope.Add("identify");
ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "id", ClaimValueTypes.UInteger64);
ClaimActions.MapJsonKey(ClaimTypes.Name, "username", ClaimValueTypes.String);
ClaimActions.MapJsonKey(ClaimTypes.Email, "email", ClaimValueTypes.Email);
ClaimActions.MapJsonKey("urn:discord:discriminator", "discriminator", ClaimValueTypes.UInteger32);
ClaimActions.MapJsonKey("urn:discord:avatar", "avatar", ClaimValueTypes.String);
ClaimActions.MapJsonKey("urn:discord:verified", "verified", ClaimValueTypes.Boolean);
}
/// <summary> Gets or sets the Discord-assigned appId. </summary>
public string AppId { get => ClientId; set => ClientId = value; }
/// <summary> Gets or sets the Discord-assigned app secret. </summary>
public string AppSecret { get => ClientSecret; set => ClientSecret = value; }
}
}