public TokenData Get(IpData data)
        {
            JObject claims = JObject.Parse(data.Token);

            var provider   = (string)claims[CommonClaims.AcsIdentityProvider];
            var identifier = (string)claims[CommonClaims.NameIdentifier];
            var name       = (string)claims[CommonClaims.Name];
            var email      = (string)claims[CommonClaims.Email];

            return(new TokenData
            {
                Email = email,
                Name = name,
                IdentityProvider = IdentityTypeParser.ParseProviderType(provider),
                UserIdentifier = identifier,
                Token = GetToken(claims),
                TokenSecret = GetTokenSecret(claims)
            });
        }
예제 #2
0
        public TokenData Get(IpData data)
        {
            // Validate security token
            var validator = new SimpleWebTokenValidator
            {
                SharedKeyBase64 = "ZY+lm6+MQeWVSeMdV+apXAaaIGNTZT7ztfBskldOMn0="
            };

            Dictionary <string, string> claims;

            try
            {
                claims = validator.ValidateToken(data.Token).Claims;
            }
            catch (HttpException e)
            {
                throw new BadRequestException(e);
            }
            catch (InvalidSecurityTokenException e)
            {
                throw new BadRequestException(e);
            }

            // Get values
            string identityProvider = claims.Single(p => p.Key == CommonClaims.AcsIdentityProvider).Value;

            return(new TokenData
            {
                UserIdentifier = claims.Single(p => p.Key == CommonClaims.NameIdentifier).Value,
                Name = claims.SingleOrDefault(p => p.Key == CommonClaims.Name).Value,
                Email = claims.SingleOrDefault(p => p.Key == CommonClaims.Email).Value,
                IdentityProvider = IdentityTypeParser.ParseProviderType(identityProvider),
                Token = GetToken(claims),
                TokenSecret = GetTokenSecret(claims)
            });
        }