Beispiel #1
0
        public Token RequestToken(IAuthenticationRequest tokenRequest)
        {
            // Check that we're accessing a valid organization from the CrmDiscoveryService Web service.
            if (String.IsNullOrEmpty(tokenRequest.OrganizationName))
            {
                OrganizationDetail orgInfo = GetOrganizationDetail();
                tokenRequest.OrganizationName = orgInfo.OrganizationName;
            }

            // Retrieve a CrmTicket from the CrmDiscoveryService Web service.
            RetrieveCrmTicketResponse crmTicketResponse = GetCrmTicketResponse(tokenRequest);

            if (crmTicketResponse == null)
            {
                // user not found, try default credentials
                IAuthenticationRequest defaultTicketRequest = GetDefaultTicketRequest();
                crmTicketResponse = GetCrmTicketResponse(defaultTicketRequest);
            }

            // user not found at all, throw exception
            if (crmTicketResponse == null)
            {
                InvalidCredentialsException ex = new InvalidCredentialsException();
                ex.Data.Add("Username", tokenRequest.DomainName + @"\" + tokenRequest.Username);
                throw ex;
            }

            CrmAuthenticationToken crmToken = GetCrmAuthenticationToken(tokenRequest, crmTicketResponse);

            return(new Token(crmToken, crmTicketResponse.OrganizationDetail.CrmServiceUrl));
        }
Beispiel #2
0
        private RetrieveCrmTicketResponse GetCrmTicketResponse(IAuthenticationRequest tokenRequest)
        {
            // Retrieve a CrmTicket from the CrmDiscoveryService Web service.
            RetrieveCrmTicketRequest crmTicketRequest = new RetrieveCrmTicketRequest();

            crmTicketRequest.OrganizationName = tokenRequest.OrganizationName;
            crmTicketRequest.UserId           = tokenRequest.DomainName + @"\" + tokenRequest.Username;
            crmTicketRequest.Password         = Globals.UnwrapSecureString(tokenRequest.Password);

            RetrieveCrmTicketResponse crmTicketResponse = null;

            try
            {
                crmTicketResponse = (RetrieveCrmTicketResponse)_disco.Execute(crmTicketRequest);
            }
            catch (SoapException se)
            {
                // examine SoapException for authentication failure
            }
            catch (Exception ex)
            {
                AddExceptionData(ex, tokenRequest);
                throw;
            }
            return(crmTicketResponse);
        }
Beispiel #3
0
        private CrmAuthenticationToken GetCrmAuthenticationToken(IAuthenticationRequest tokenRequest, RetrieveCrmTicketResponse ticket)
        {
            Int32 authenticationType;

#if DEBUG_AuthOverride
            authenticationType = Globals.CrmServiceSettings.DeploymentType;
#else
            if (String.IsNullOrEmpty(tokenRequest.DomainName))
            {
                // this is a CRM user, don't authenticate with their credentials
                authenticationType = Globals.CrmServiceSettings.DeploymentType;
            }
            else
            {
                // this is a domain user, authenticate via AD
                authenticationType = AuthenticationType.AD;
            }
#endif

            CrmAuthenticationToken sdkToken = new CrmAuthenticationToken()
            {
                AuthenticationType = authenticationType,
                OrganizationName   = ticket.OrganizationDetail.OrganizationName,
                CrmTicket          = ticket.CrmTicket
            };
            return(sdkToken);
        }