Monday, February 9, 2009
GoogleMan
Tuesday, November 18, 2008
ASP.NET Forms Authentication Disappearing Cookie
I have been developing the login for a secure asp.net web application.
The application requires Forms Authentication with a pass through to a Windows Identity (see How To: Use Protocol Transition and Constrained Delegation in ASP.NET 2.0). To simplify matters I have been building up the security process in an empty web project.
having created a Forms Authentication web site (How To: Use Forms Authentication with Active Directory in ASP.NET 2.0) and implemented the Use Protocol Transition and Constrained Delegation (see link above) the login worked on the Visual Studio 2008 ASP.NET Development Server.
Next step was to release to a development server, the same Windows 2008 machine used to host the main application, following deployment the login failed.
Having searched a little I broke out Fiddler and discovered the Authentication Ticket/Cookie was set on login and then lost on redirect to the target secure page.
After a good nights sleep and fiddling around a little I verified the whole login process worked by placing the ticket on the URI, this however was not an acceptable solution.
Back to searching, this time I included IIS7 in my search and came up with this - I couldn't quite believe this was true, but it fixed my problem.
The test site I had created included an underscore in the URL, this was causing the cookie loss.
I have run this past a few colleagues and despite the use of an underscore in a URL not been common they knew of no real reason not to use one.
I hope this help someone out there.
Posted by AWR at 1:59 AM 1 comments
Labels: .NET, ASP.NET, C#, Cookies, Forms Authentication, IIS7, Micorsoft, S4U, Visual Studio 2008, Windows Server 2008
Wednesday, October 29, 2008
Programming Languages - Shooting yourself in the foot
C You shoot yourself in the foot.
C++ You accidentally create a dozen clones of yourself and shoot them all in the foot. Providing emergency medical assistance is impossible since you can't tell which are bitwise copies and which are just pointing at others and saying, That's me, over there.
JAVA After importing java.awt.right.foot.* and java.awt.gun.right.hand.*, and writing the classes and methods of those classes needed, you've forgotten what the hell you're doing.
Ruby Your foot is ready to be shot in roughly five minutes, but you just can't find anywhere to shoot it.
PHP You shoot yourself in the foot with a gun made with pieces from 300 other guns.
ASP.NET Find a gun, it falls apart. Put it back together, it falls apart again. You try using the .GUN Framework, it falls apart. You stab yourself in the foot instead.
SQL SELECT @ammo:=bullet FROM gun WHERE trigger = 'PULLED'; INSERT INTO leg (foot) VALUES (@ammo);
Perl You start shooting yourself in the foot, but you lose the gun.
Javascript You've perfected a robust, rich user experience for shooting yourself in the foot. You then find that bullets are disabled on your gun.
CSS You shoot your right foot with one hand, then switch hands to shoot your left foot but you realize that the gun has turned into a banana.
FORTRAN You shoot yourself in each toe, iteratively, until you run out of toes, then you read in the next foot and repeat. If you run out of bullets, you continue anyway because you have no exception-handling ability.
Modula2 After realizing that you can't actually accomplish anything in this language, you shoot yourself in the head.
COBOL Using a COLT 45 HANDGUN, AIM gun at LEG.FOOT, THEN place ARM.HAND.FINGER. on HANDGUN.TRIGGER and SQUEEZE. THEN return HANDGUN to HOLSTER. CHECK whether shoelace needs to be retied.
LISP You shoot yourself in the appendage which holds the gun with which you shoot yourself in the appendage which holds the gun with which you shoot yourself in the appendage which holds the gun with which you shoot yourself in the appendage which holds the gun with which you shoot yourself in the appendage which holds ..
BASIC Shoot yourself in the foot with a water pistol. On big systems, continue until entire lower body is waterlogged.
FORTH Foot in yourself shoot.
APL You shoot yourself in the foot, then spend all day figuring out how to do it in fewer characters.
Delphi The compiler won't let you shoot yourself in the foot.
SNOBOL If you succeed, shoot yourself in the left foot. If you fail, shoot yourself in the right foot.
Concurrent Euclid You shoot yourself in somebody else's foot.
HyperTalk Put the first bullet of the gun into the foot of the left leg of you. Answer the result.
Motif You spend days writing a UIL description of your foot, the trajectory, the bullet, and the intricate scrollwork on the ivory handles of the gun. When you finally get around to pulling the trigger, the gun jams.
Unix % ls foot.c foot.h foot.o toe.c toe.o % rm * .o rm: .o: No such file or directory % ls %
Paradox Not only can you shoot yourself in the foot, your users can too.
Revelation You'll be able to shoot yourself in the foot just as soon as you figure out what all these bullets are for.
Visual Basic You'll shoot yourself in the foot, but you'll have so much fun doing it that you won't care.
Prolog You tell your program you want to be shot in the foot. The program figures out how to do it, but the syntax doesn't allow it to explain.
Ada After correctly packaging your foot, you attempt to concurrently load the gun, pull the trigger, scream and shoot yourself in the foot. When you try, however, you discover that your foot is of the wrong type.
Assembly You try to shoot yourself in the foot only to discover you must first reinvent the gun, the bullet, and your foot. After that's done, you pull the trigger, the gun beeps several times, then crashes.
370 JCL You send your foot down to MIS with a 4000-page document explaining how you want it to be shot. Three years later, your foot comes back deep-fried.
Posted by AWR at 4:46 AM 0 comments
Labels: General, Programming Languages
Monday, October 13, 2008
Unit Testing III
When testing a method with a WCF call the Test Project must have the same WCF referenced within it.
Likely to get an Exception
Could not find endpoint element with name '...' and contract '...' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this name could be found in the client element.
Posted by AWR at 1:52 AM 0 comments
Labels: .NET, Unit Testing, WCF
Tuesday, October 7, 2008
Unit Testing II
Its been a while since I wrote any Unit Tests in anger (even then it was part of a University project)...
So I'm listing a few essential pieces of knowledge that seem to have escaped me...
1. This is not an exciting job - the important ones rarely are!
2. Include any Connection Strings or similar in the Test Project's app.config file.
3. Do this carefully - especially when your WCF interacts with multiple databases.
4. Objects & Lists? It can be difficult to compare two of these instances, like all tests (and these are the easy ones) be creative!
5. A Test project does not always react well to having multiple subject projects to test.
6. A Solution will not always react will to having multiple Test Projects in it.
Posted by AWR at 2:01 AM 0 comments
Labels: .NET, Unit Testing, Visual Studio 2008, WCF
Unit Testing I
I am currently writing some Unit Tests to allow automated building and load testing for a .NET WCF.
One of the methods in the WCF remained a skeleton, throwing a NotImplementedException, which I sepent a while googling before I checked the code, learn by stupid mistakes, check the code first!
Posted by AWR at 1:54 AM 0 comments
Labels: .NET, Unit Testing, Visual Studio 2008, WCF
Thursday, September 25, 2008
LINQ To SQL
My first Attempts to use LINQ were breifly held back until I realised the beta version had slightly different functions availiable, the diffrences are outlined here. Add has been replaced by InsertOnSubmit and Remove by DeleteOnSubmit, becareful when looking at the example on the web, most were written using the beta release...
After this I found it was very easy to create a fully functional set of methods for Insert, Update and Get, (no Delete as it not required by the system).
GET
DataContext objDB = new DataContext();
var temp = from hi in objDB.Help
where hi.Identifier == ID
select hi;
UPDATE
DataContext objDB = new DataContext();
Help temp = from hi in objDB.Help
where hi.Identifier == ID
select hi;
temp.Author = "Harry";
objDB.SubmitChanges();
INSERT
Help temp = new Help();
// Populate object to insert
DataContext objDB = new DataContext();
objDB.Help.InsertOnSubmit(temp);
objDB.SubmitChanges();
Obviously there is a little more to the work than this, but I won't repeat too much of what is already out there, for example: Scott Guthrie's Blog and The Linq Project.
Posted by AWR at 2:08 AM 0 comments
Labels: .NET, Beta Release, Final Release, LINQ, Microsoft Expression