Example #1
0
        /// <summary>
        /// The MapRequestJwtPayloadToSsoJwtPayload method.
        /// Maps the information inside a SSO JWT payload to the SsoJwtPayload model.
        /// <para>
        /// @author: Jennifer Nguyen
        /// @updated: 04/09/2018
        /// </para>
        /// </summary>
        /// <param name="payload"></param>
        /// <returns>ResponseDto with a SsoTokenPayload</returns>
        public ResponseDto <SsoTokenPayloadDto> MapRequestJwtPayloadToSsoJwtPayload()
        {
            // Convert string token to Json Web Security Token (JwtSecurityToken)
            var jwt = _tokenService.GetJwtSecurityToken(_ssoToken.Token);
            // Extract payload from JwtSecurityToken
            var payload            = jwt.Payload;
            var ssoTokenPayloadDto = new SsoTokenPayloadDto();

            // Mapping required information in the payload to a data transfer object
            foreach (var keyValuePair in payload)
            {
                switch (keyValuePair.Key)
                {
                case SsoTokenPayloadKeys.USERNAME:
                    ssoTokenPayloadDto.Username = keyValuePair.Value.ToString();
                    break;

                case SsoTokenPayloadKeys.PASSWORD:
                    ssoTokenPayloadDto.Password = keyValuePair.Value.ToString();
                    break;

                case SsoTokenPayloadKeys.ROLE_TYPE:
                    ssoTokenPayloadDto.RoleType = keyValuePair.Value.ToString().ToLower();
                    break;

                case SsoTokenPayloadKeys.APPLICATION:
                    ssoTokenPayloadDto.Application = keyValuePair.Value.ToString().ToLower();
                    break;

                case SsoTokenPayloadKeys.IAT:
                    ssoTokenPayloadDto.IssuedAt = keyValuePair.Value.ToString();
                    break;

                default:
                    // If there are extra keys in payload, then the token is invalid
                    return(new ResponseDto <SsoTokenPayloadDto>()
                    {
                        Data = null,
                        Error = SsoErrorMessages.INVALID_TOKEN_PAYLOAD
                    });
                }
            }

            return(new ResponseDto <SsoTokenPayloadDto>()
            {
                Data = ssoTokenPayloadDto
            });
        }