Пример #1
0
        public void DiscordJwtTest()
        {
            // Arrange
            ulong  discordUserId   = 123;
            string discordUsername = "******";
            // This is a completely arbitrary string and can be safely committed
            string sharedSecret = "5g35gq3095gq3598jgq30598jgq3950gjh48079ghq30954yhgq349875hgq9754hqg78946qgh45gqjn4rjigerg89w5w9845ug89w45g9w45gw";
            var    jwtString    = JwtBuilder.BuildDiscordJwt(sharedSecret, discordUserId.ToString(), discordUsername);
            var    securityKey  = new Microsoft
                                  .IdentityModel.Tokens.SymmetricSecurityKey(Encoding.UTF8.GetBytes(sharedSecret));

            var handler = new JwtSecurityTokenHandler();

            handler.ValidateToken(jwtString, new TokenValidationParameters()
            {
                ValidIssuer         = "Synthbot.DiscordBot",
                ValidAudience       = "Synthbot.WebApp",
                ValidateIssuer      = true,
                ValidateAudience    = true,
                RequireSignedTokens = true,
                IssuerSigningKey    = securityKey
            }, out SecurityToken validatedToken);

            var validatedJwtToken = (JwtSecurityToken)validatedToken;

            Assert.Equal(discordUserId.ToString(), validatedJwtToken.Claims.FirstOrDefault(c => c.Type == SynthbotClaimTypes.DiscordUserId)?.Value);
        }
Пример #2
0
        public Uri GetLoginUriManual(SocketCommandContext Context)
        {
            var jwt = JwtBuilder.BuildDiscordJwt(_config["synthbot.token.sharedsecret"], Context.User.Id.ToString(), Context.User.Username);

            var signinUri = new Uri($@"{_config["synthbot.webapp.protocol"]}://{_config["synthbot.webapp.host"]}/Identity/Account/ExternalLogin?provider=Spotify&referralToken={jwt}");

            return(signinUri);
        }
Пример #3
0
        public Uri GetLoginUriAuto(string userId, string username)
        {
            var jwt = JwtBuilder.BuildDiscordJwt(_config["synthbot.token.sharedsecret"], userId, username);

            var signinUri = new Uri($@"{_config["synthbot.webapp.protocol"]}://{_config["synthbot.webapp.host"]}/Identity/Account/ExternalLogin?provider=Spotify&referralToken={jwt}");

            return(signinUri);
        }
Пример #4
0
        public void Authenticate(IRestClient client, IRestRequest request)
        {
            string jwt = JwtBuilder.BuildDiscordJwt(_sharedSecret, _discordUserId, _discordUsername);

            request.AddHeader("Authorization", $"Bearer {jwt}");
        }