Exemple #1
0
 /// <summary>
 /// This static method activates a user and creates a new instance of SecureEnvironment.
 /// The authentication type determines the type of user identity that will be activated.
 /// If Permanent Windows activation is requested then the default currently logged on
 /// Windows Account identity will be activated. If Temporary Windows activation requested
 /// then user will be prompted for Windows Domain credentials through a dialog, and the
 /// user identified through those credentials will be activated.
 /// In case of Passport authentication, a Passport authentication dialog will always
 /// appear regardless of temporary or permanent activation mode. The user that authenticatd
 /// through that Passport Authentication dialog will be activated.
 /// Regardless of Windows or Passport Authentication, all Temporary created activation will be
 /// destroyed when SecureEnvironment instance is Disposed or Finalized.
 /// </summary>
 public static SecureEnvironment Create(string applicationManifest,
                                        AuthenticationType authentication,
                                        UserActivationMode userActivationMode)
 {
     return(CriticalCreate(applicationManifest,
                           authentication,
                           userActivationMode));
 }
        /// <summary>
        /// This static method activates a user and creates a new instance of SecureEnvironment.
        /// The authentication type determines the type of user identity that will be activated.
        /// If Permanent Windows activation is requested then the default currently logged on
        /// Windows Account identity will be activated. If Temporary Windows activation requested
        /// then user will be prompted for Windows Domain credentials through a dialog, and the
        /// user identified through those credentials will be activated.
        /// In case of Passport authentication, a Passport authentication dialog will always
        /// appear regardless of temporary or permanent activation mode. The user that authenticatd
        /// through that Passport Authentication dialog will be activated.
        /// Regardless of Windows or Passport Authentication, all Temporary created activation will be
        /// destroyed when SecureEnvironment instance is Disposed or Finalized.
        /// </summary>
        public static SecureEnvironment Create(string applicationManifest,
                                               AuthenticationType authentication,
                                               UserActivationMode userActivationMode)
        {
            SecurityHelper.DemandRightsManagementPermission();

            return(CriticalCreate(applicationManifest,
                                  authentication,
                                  userActivationMode));
        }
        /// <summary>
        /// This static method activates a user and creates a new instance of SecureEnvironment.
        /// The authentication type determines the type of user identity that will be activated. 
        /// If Permanent Windows activation is requested then the default currently logged on 
        /// Windows Account identity will be activated. If Temporary Windows activation requested 
        /// then user will be prompted for Windows Domain credentials through a dialog, and the 
        /// user identified through those credentials will be activated. 
        /// In case of Passport authentication, a Passport authentication dialog will always
        /// appear regardless of temporary or permanent activation mode. The user that authenticatd 
        /// through that Passport Authentication dialog will be activated.
        /// Regardless of Windows or Passport Authentication, all Temporary created activation will be 
        /// destroyed when SecureEnvironment instance is Disposed or Finalized.  
        /// </summary>   
        public static SecureEnvironment Create(string applicationManifest, 
                                                                                        AuthenticationType authentication, 
                                                                                        UserActivationMode userActivationMode)
        {
            SecurityHelper.DemandRightsManagementPermission();

            return CriticalCreate(applicationManifest, 
                                            authentication,
                                            userActivationMode);
        }
Exemple #4
0
        internal ClientSession(
            ContentUser user,
            UserActivationMode userActivationMode)
        {
            Invariant.Assert(user != null);
            Invariant.Assert((userActivationMode == UserActivationMode.Permanent) ||
                                    (userActivationMode == UserActivationMode.Temporary));

            _user = user;
            _userActivationMode = userActivationMode;

            // prepare callback handler 
            _callbackHandler = new CallbackHandler();

            int hr = SafeNativeMethods.DRMCreateClientSession(
                _callbackHandler.CallbackDelegate,
                NativeConstants.DrmCallbackVersion,
                _user.AuthenticationProviderType,
                _user.Name,
                out _hSession);

            Errors.ThrowOnErrorCode(hr);
            Invariant.Assert((_hSession != null) && (!_hSession.IsInvalid));
        }
 public static SecureEnvironment Create(string applicationManifest, AuthenticationType authentication, UserActivationMode userActivationMode)
 {
     throw new NotImplementedException ();
 }
Exemple #6
0
        internal ContentUser ActivateUser(
            AuthenticationType authentication, UserActivationMode userActivationMode)
        {
            CheckDisposed();

            ActivationFlags actFlags = ActivationFlags.GroupIdentity;

            // for windows Silen Flag must be set For Passport it must not be set 
            if (_user.AuthenticationType == AuthenticationType.Windows)
            {
                actFlags |= ActivationFlags.Silent;
            }

            if (userActivationMode == UserActivationMode.Temporary)
            {
                actFlags |= ActivationFlags.Temporary;
            }

            string userCertificate =
                Activate(actFlags, GetCertificationUrl(authentication));

            return ExtractUserFromCertificate(userCertificate);
        }
        private static SecureEnvironment CriticalCreate(
            string applicationManifest,
            AuthenticationType authentication,
            UserActivationMode userActivationMode)
        {
            if (applicationManifest == null)
            {
                throw new ArgumentNullException("applicationManifest");
            }

            if ((authentication != AuthenticationType.Windows) &&
                (authentication != AuthenticationType.Passport))
            {
                throw new ArgumentOutOfRangeException("authentication");
            }

            if ((userActivationMode != UserActivationMode.Permanent) &&
                (userActivationMode != UserActivationMode.Temporary))
            {
                throw new ArgumentOutOfRangeException("userActivationMode");
            }

            //build user with the given authnetication type and a default name
            // only authentication type is critical in this case
            ContentUser user;

            using (ClientSession tempClientSession =
                       ClientSession.DefaultUserClientSession(authentication))
            {
                //Activate Machine if neccessary
                if (!tempClientSession.IsMachineActivated())
                {
                    // activate Machine
                    tempClientSession.ActivateMachine(authentication);
                }

                //Activate User (we will force start activation at this point)
                // at this point we should have a real user name
                user = tempClientSession.ActivateUser(authentication, userActivationMode);
            }

            Debug.Assert(IsUserActivated(user));

            ClientSession clientSession = new ClientSession(user, userActivationMode);

            try
            {
                try
                {
                    // make sure we have a Client Licensor Certificate
                    clientSession.AcquireClientLicensorCertificate();
                }
                catch (RightsManagementException)
                {
                    // In case of the RightsMnaagement exception we are willing to proceed
                    // as ClientLicensorCertificate only required for publishing not for consumption
                    // and therefore it is optional to have one.
                }

                clientSession.BuildSecureEnvironment(applicationManifest);

                return(new SecureEnvironment(applicationManifest, user, clientSession));
            }
            catch
            {
                clientSession.Dispose();
                throw;
            }
        }
        private static SecureEnvironment CriticalCreate(
            string applicationManifest, 
            AuthenticationType authentication,
            UserActivationMode userActivationMode)
        {
            if (applicationManifest == null)
            {
                throw new ArgumentNullException("applicationManifest");
            }

            if ((authentication != AuthenticationType.Windows) && 
                 (authentication != AuthenticationType.Passport))
            {
                throw new ArgumentOutOfRangeException("authentication");
            }

            if ((userActivationMode != UserActivationMode.Permanent) &&
                 (userActivationMode != UserActivationMode.Temporary))
            {
                throw new ArgumentOutOfRangeException("userActivationMode");            
            }

            //build user with the given authnetication type and a default name 
            // only authentication type is critical in this case 
            ContentUser user; 
            
            using (ClientSession tempClientSession =
                ClientSession.DefaultUserClientSession(authentication))
            {
                //Activate Machine if neccessary
                if (!tempClientSession.IsMachineActivated())
                {
                    // activate Machine
                    tempClientSession.ActivateMachine(authentication);
                }

                //Activate User (we will force start activation at this point)
                // at this point we should have a real user name 
                user = tempClientSession.ActivateUser(authentication, userActivationMode);
            }

            Debug.Assert(IsUserActivated(user));

            ClientSession clientSession = new ClientSession(user, userActivationMode);

            try
            {
                try
                {
                    // make sure we have a Client Licensor Certificate 
                    clientSession.AcquireClientLicensorCertificate();
                }
                catch (RightsManagementException)
                {
                    // In case of the RightsMnaagement exception we are willing to proceed
                    // as ClientLicensorCertificate only required for publishing not for consumption 
                    // and therefore it is optional to have one.
                }
            
                clientSession.BuildSecureEnvironment(applicationManifest);

                return new SecureEnvironment(applicationManifest, user, clientSession);
            }
            catch
            {
                clientSession.Dispose();
                throw;
            }
        }
 public static SecureEnvironment Create(string applicationManifest, AuthenticationType authentication, UserActivationMode userActivationMode)
 {
     throw new NotImplementedException();
 }