예제 #1
0
        private bool HandleResponseMessage()
        {
            try
            {
                var responseMessage = FederationAuthenticationModule.GetSignInResponseMessage(new HttpRequestWrapper(this.Context.Request));
                if (responseMessage != null)
                {
                    string xmlTokenFromMessage = this.FederationAuthenticationModule.GetXmlTokenFromMessage(responseMessage, null);

                    FederationConfiguration serviceConfiguration = this.FederationAuthenticationModule.FederationConfiguration;
                    //ServiceConfiguration serviceConfiguration       = CUFSSecurityTokenServiceConfiguration.Current;
                    FederationPassiveTokenReceiver tokenReceiver = new FederationPassiveTokenReceiver(serviceConfiguration);
                    SecurityToken securityToken = tokenReceiver.ReadToken(xmlTokenFromMessage);

                    SecurityTokenReceivedEventArgs securityTokenReceivedEventArgs = new SecurityTokenReceivedEventArgs(securityToken);
                    this.OnSecurityTokenReceived(securityTokenReceivedEventArgs);

                    if (!securityTokenReceivedEventArgs.Cancel)
                    {
                        ClaimsPrincipal claimsPrincipal = tokenReceiver.AuthenticateToken(securityTokenReceivedEventArgs.SecurityToken, true, HttpContext.Current.Request.RawUrl);
                        if (claimsPrincipal != null)
                        {
                            SecurityTokenValidatedEventArgs securityTokenValidatedEventArgs = new SecurityTokenValidatedEventArgs(claimsPrincipal);
                            this.OnSecurityTokenValidated(securityTokenValidatedEventArgs);
                            if (!securityTokenValidatedEventArgs.Cancel)
                            {
                                SessionAuthenticationModule current = FederatedAuthentication.SessionAuthenticationModule;

                                DateTime validFrom;
                                DateTime validTo;

                                tokenReceiver.ComputeSessionTokenLifeTime(securityTokenReceivedEventArgs.SecurityToken, out validFrom, out validTo);
                                SessionSecurityToken sessionToken = current.CreateSessionSecurityToken(securityTokenValidatedEventArgs.ClaimsPrincipal, this.GetSessionTokenContext(), validFrom, validTo, false);

                                SessionSecurityTokenCreatedEventArgs sessionSecurityTokenCreatedEventArgs = new SessionSecurityTokenCreatedEventArgs(sessionToken);
                                sessionSecurityTokenCreatedEventArgs.WriteSessionCookie = true;

                                this.OnSessionSecurityTokenCreated(sessionSecurityTokenCreatedEventArgs);

                                this.FederationAuthenticationModule.SetPrincipalAndWriteSessionToken(sessionSecurityTokenCreatedEventArgs.SessionToken, sessionSecurityTokenCreatedEventArgs.WriteSessionCookie);

                                this.OnSignedIn(EventArgs.Empty);

                                return(true);
                            }
                        }
                    }
                }

                return(false);
            }
            catch (Exception ex)
            {
                this.ErrorText = ex.Message;
                return(false);
            }
        }
        private bool HandleResponseMessage()
        {
            try
            {
                var responseMessage = FederationAuthenticationModule.GetSignInResponseMessage( new HttpRequestWrapper( this.Context.Request ) );
                if ( responseMessage != null )
                {
                    string xmlTokenFromMessage = this.FederationAuthenticationModule.GetXmlTokenFromMessage( responseMessage, null );

                    FederationConfiguration serviceConfiguration = this.FederationAuthenticationModule.FederationConfiguration;
                    //ServiceConfiguration serviceConfiguration       = CUFSSecurityTokenServiceConfiguration.Current;
                    FederationPassiveTokenReceiver tokenReceiver = new FederationPassiveTokenReceiver( serviceConfiguration );
                    SecurityToken securityToken = tokenReceiver.ReadToken( xmlTokenFromMessage );

                    SecurityTokenReceivedEventArgs securityTokenReceivedEventArgs = new SecurityTokenReceivedEventArgs( securityToken );
                    this.OnSecurityTokenReceived( securityTokenReceivedEventArgs );

                    if ( !securityTokenReceivedEventArgs.Cancel )
                    {
                        ClaimsPrincipal claimsPrincipal = tokenReceiver.AuthenticateToken( securityTokenReceivedEventArgs.SecurityToken, true, HttpContext.Current.Request.RawUrl );
                        if ( claimsPrincipal != null )
                        {
                            SecurityTokenValidatedEventArgs securityTokenValidatedEventArgs = new SecurityTokenValidatedEventArgs( claimsPrincipal );
                            this.OnSecurityTokenValidated( securityTokenValidatedEventArgs );
                            if ( !securityTokenValidatedEventArgs.Cancel )
                            {
                                SessionAuthenticationModule current = FederatedAuthentication.SessionAuthenticationModule;

                                DateTime validFrom;
                                DateTime validTo;

                                tokenReceiver.ComputeSessionTokenLifeTime( securityTokenReceivedEventArgs.SecurityToken, out validFrom, out validTo );
                                SessionSecurityToken sessionToken = current.CreateSessionSecurityToken( securityTokenValidatedEventArgs.ClaimsPrincipal, this.GetSessionTokenContext(), validFrom, validTo, false );

                                SessionSecurityTokenCreatedEventArgs sessionSecurityTokenCreatedEventArgs = new SessionSecurityTokenCreatedEventArgs( sessionToken );
                                sessionSecurityTokenCreatedEventArgs.WriteSessionCookie = true;

                                this.OnSessionSecurityTokenCreated( sessionSecurityTokenCreatedEventArgs );

                                this.FederationAuthenticationModule.SetPrincipalAndWriteSessionToken( sessionSecurityTokenCreatedEventArgs.SessionToken, sessionSecurityTokenCreatedEventArgs.WriteSessionCookie );

                                this.OnSignedIn( EventArgs.Empty );

                                return true;
                            }
                        }
                    }
                }

                return false;
            }
            catch ( Exception ex )
            {
                this.ErrorText = ex.Message;
                return false;
            }
        }