示例#1
0
        public void UserSetupUrl()
        {
            // Construct a V1 immediate request
            Protocol       protocol         = Protocol.V11;
            OpenIdProvider provider         = this.CreateProvider();
            CheckIdRequest immediateRequest = new CheckIdRequest(protocol.Version, OPUri, DotNetOpenAuth.OpenId.RelyingParty.AuthenticationRequestMode.Immediate);

            immediateRequest.Realm           = RPRealmUri;
            immediateRequest.ReturnTo        = RPUri;
            immediateRequest.LocalIdentifier = "http://somebody";
            AuthenticationRequest request = new AuthenticationRequest(provider, immediateRequest);

            // Now simulate the request being rejected and extract the user_setup_url
            request.IsAuthenticated = false;
            Uri userSetupUrl = ((NegativeAssertionResponse)request.Response).UserSetupUrl;

            Assert.IsNotNull(userSetupUrl);

            // Now construct a new request as if it had just come in.
            HttpRequestInfo httpRequest = new HttpRequestInfo {
                UrlBeforeRewriting = userSetupUrl
            };
            var setupRequest = AuthenticationRequest_Accessor.AttachShadow(provider.GetRequest(httpRequest));
            CheckIdRequest_Accessor setupRequestMessage = setupRequest.RequestMessage;

            // And make sure all the right properties are set.
            Assert.IsFalse(setupRequestMessage.Immediate);
            Assert.AreEqual(immediateRequest.Realm, setupRequestMessage.Realm);
            Assert.AreEqual(immediateRequest.ReturnTo, setupRequestMessage.ReturnTo);
            Assert.AreEqual(immediateRequest.LocalIdentifier, setupRequestMessage.LocalIdentifier);
            Assert.AreEqual(immediateRequest.Version, setupRequestMessage.Version);
        }
示例#2
0
        public void CreateRequestMessage()
        {
            OpenIdCoordinator coordinator = new OpenIdCoordinator(
                rp => {
                Identifier id = this.GetMockIdentifier(ProtocolVersion.V20);
                IAuthenticationRequest authRequest = rp.CreateRequest(id, this.realm, this.returnTo);

                // Add some callback arguments
                authRequest.AddCallbackArguments("a", "b");
                authRequest.AddCallbackArguments(new Dictionary <string, string> {
                    { "c", "d" }, { "e", "f" }
                });

                // Assembly an extension request.
                ClaimsRequest sregRequest = new ClaimsRequest();
                sregRequest.Nickname      = DemandLevel.Request;
                authRequest.AddExtension(sregRequest);

                // Construct the actual authentication request message.
                var authRequestAccessor = AuthenticationRequest_Accessor.AttachShadow(authRequest);
                var req = authRequestAccessor.CreateRequestMessage();
                Assert.IsNotNull(req);

                // Verify that callback arguments were included.
                NameValueCollection callbackArguments = HttpUtility.ParseQueryString(req.ReturnTo.Query);
                Assert.AreEqual("b", callbackArguments["a"]);
                Assert.AreEqual("d", callbackArguments["c"]);
                Assert.AreEqual("f", callbackArguments["e"]);

                // Verify that extensions were included.
                Assert.AreEqual(1, req.Extensions.Count);
                Assert.IsTrue(req.Extensions.Contains(sregRequest));
            },
                AutoProvider);

            coordinator.Run();
        }
 private AuthenticationRequest_Accessor CreateAuthenticationRequest(Identifier claimedIdentifier, Identifier providerLocalIdentifier)
 {
     ProviderEndpointDescription providerEndpoint = new ProviderEndpointDescription(OPUri, this.protocol.Version);
     ServiceEndpoint endpoint = ServiceEndpoint.CreateForClaimedIdentifier(claimedIdentifier, providerLocalIdentifier, providerEndpoint, 10, 5);
     ServiceEndpoint_Accessor endpointAccessor = ServiceEndpoint_Accessor.AttachShadow(endpoint);
     OpenIdRelyingParty rp = this.CreateRelyingParty();
     AuthenticationRequest_Accessor authRequest = new AuthenticationRequest_Accessor(endpointAccessor, this.realm, this.returnTo, rp);
     return authRequest;
 }