Beispiel #1
0
        public void IdentifyRequestMessageEncoding()
        {
            IdentifyRequestMessage originalMessage = new IdentifyRequestMessage();

            originalMessage.ParticipantId           = Guid.NewGuid();
            originalMessage.ParticipantIdentityType = "open-id";
            originalMessage.ParticipantIdentity     = "test-open-id";

            byte[] encodedBytes = new byte[originalMessage.FrameDataSize(0)];

            int dataLength = originalMessage.EncodeFrameData(0, encodedBytes, 0);

            IdentifyRequestMessage decodedMessage = new IdentifyRequestMessage();

            decodedMessage.DecodeFrameData(0, encodedBytes, 0, dataLength);



            decodedMessage.MessageId = originalMessage.MessageId;


            String originalMessageString = originalMessage.ToString();
            String decodedMessageString  = decodedMessage.ToString();

            Assert.AreEqual(originalMessageString, decodedMessageString);
        }
Beispiel #2
0
        private void RequestIdentify(BubbleLink bubbleLink, CloudObject cloudObject)
        {
            Session         session         = bubble.GetBubbleLinkSession(bubbleLink);
            Guid            participantId   = cloudObject.OwnerId;
            ParticipantLink participantLink = bubble.GetParticipant(cloudObject.OwnerId);

            // Delegate to access participant identity
            string participantIdentity = CloudParticipantIdentify(participantId);

            IdentifyRequestMessage identifyRequest = (IdentifyRequestMessage)MessageFactory.Current.ReserveMessage(typeof(IdentifyRequestMessage));

            identifyRequest.ParticipantId           = participantId;
            identifyRequest.ParticipantIdentityType = IdentifyRequestMessage.OPEN_ID_IDENTITY;
            identifyRequest.ParticipantIdentity     = participantIdentity;

            Handover handover = new Handover();

            handover.Started                  = DateTime.Now;
            handover.RemoteBubbleId           = bubbleLink.RemoteBubbleId;
            handover.ParticipantId            = cloudObject.OwnerId;
            handover.ObjectId                 = cloudObject.ObjectId;
            handover.IdentityRequestMessageId = identifyRequest.MessageId;
            handovers.Add(handover);

            LogUtil.Info("Sent identify request from " + bubble.BubbleName + " to " + bubbleLink.RemoteBubbleName + " for " + identifyRequest.ParticipantIdentity + " (" + identifyRequest.ParticipantIdentityType + ") to be able to handover object " + cloudObject.ObjectId + ".");

            session.Send(identifyRequest);
        }
Beispiel #3
0
        public void EjectRequestMessageClear()
        {
            IdentifyRequestMessage originalMessage = new IdentifyRequestMessage();

            originalMessage.ParticipantId           = Guid.NewGuid();
            originalMessage.ParticipantIdentityType = "open-id";
            originalMessage.ParticipantIdentity     = "test-open-id";

            originalMessage.Clear();
            IdentifyRequestMessage emptyMessage = new IdentifyRequestMessage();

            emptyMessage.MessageId = originalMessage.MessageId;
            Assert.AreEqual(originalMessage.ToString(), emptyMessage.ToString());
        }
Beispiel #4
0
        private void HandleIdentifyRequest(Session session, IdentifyRequestMessage identifyRequest)
        {
            BubbleLink bubbleLink = bubble.GetBubbleLink(session);

            LogUtil.Info("Received identify request from " + bubbleLink.RemoteBubbleName + " to " + bubble.BubbleName + " for " + identifyRequest.ParticipantIdentity + " (" + identifyRequest.ParticipantIdentityType + ").");

            IdentifyResponseMessage identifyResponse = (IdentifyResponseMessage)MessageFactory.Current.ReserveMessage(typeof(IdentifyResponseMessage));

            identifyResponse.RequestMessageId = identifyRequest.MessageId;

            // Call identify to allow application to reject identity.
            identifyResponse.FailureCode = CloudParticipantIdentified(bubble, identifyRequest);

            session.Send(identifyResponse);
        }
Beispiel #5
0
        public byte OnCloudParticipantIdentified(CloudBubble bubble, IdentifyRequestMessage message)
        {
            Guid   participantId           = message.ParticipantId;
            String participantIdentifier   = message.ParticipantIdentity;
            String participantIdentityType = message.ParticipantIdentityType;

            if (!participantIdentityType.Equals(IdentifyRequestMessage.OPEN_ID_IDENTITY))
            {
                return(MxpResponseCodes.UNSUPPORTED_OPERATION);
            }

            Participant participant = QueryUtil.First <DaemonLogic.Participant>(
                from p in entityContext.Participant where p.ParticipantId == participantId select p);

            if (participant != null)
            {
                if (participant.OpenIdUrl != participantIdentifier)
                {
                    return(MxpResponseCodes.RESERVED_ID);
                }
                else
                {
                    return(MxpResponseCodes.SUCCESS);
                }
            }

            participant = QueryUtil.First <DaemonLogic.Participant>(
                from p in entityContext.Participant where p.OpenIdUrl == participantIdentifier select p);
            if (participant != null)
            {
                return(MxpResponseCodes.UNAUTHORIZED_OPERATION);
            }

            participant = new Participant
            {
                ParticipantId = participantId,
                OpenIdUrl     = participantIdentifier,
            };

            entityContext.AddToParticipant(participant);
            entityContext.SaveChanges();

            return(MxpResponseCodes.SUCCESS);
        }