Thursday, April 24, 2008

fun with FBA...

No, it's not a dirty term.

FBA = Forms Based Authentication - it's a Sharepoint thing.

I've been tasked with creating an extranet for the Board at the regional library organization that I work for.

It's been an education, to say the least.

We are using a separated isolated server to host the extranet with a pristine uncluttered version of Windows Sharepoint Services (WSS) 3.0. Typically when implemented as an intranet, WSS uses windows authentication in conjunction with Active Directory (AD.). When implemented as an extranet, there are security issues with potentially exposing AD to the outside world, so we seek a different means of authenticating users in an extranet. This does of course assume that we still need to authenticate users of the extranet and that we are not simply throwing it open to the world.

The easiest (relatively speaking) alternative means of authentication vs. windows authentication is FBA - Forms Based Authentication. There are some things that are given up when we go this route - most notably a significant level of the integration features that make WSS so appealing for intranet use. However we still retain significant functionality that makes the overall endeavor worthwhile.

To date, while trying to implement FBA, I seem to have run across something that is either so widely known that no one has seen fit to document it, or that is rarely enough encountered that no one has documented it yet.

First some clarification of some confusing points. A basic standalone default installation of WSS 3.0 uses Windows Internal Database (WID) as the underlying data store. WID is a modified instance of SQL Server Express Edition (SSEE) that has some limitations and special characteristics. This is basically the only instance in which WID is used with WSS/Sharepoint. A default standalone installation of Microsoft Office Sharepoint Server (MOSS)(the expensive version of WSS) uses SSEE.

WID, as used for WSS 3.0, does not have some of the limitations of SSEE as used in MOSS. For instance, SSEE has a 4gb size limitation on a db when used with MOSS as well as some limitations on processor and RAM usage. While it is not clear whether there are any limitations on processor and RAM use with WID, it is definite that there are no size limitations on WID databases used with WSS.

However, WID is significantly locked down compared with SSEE. It can not be used by other applications, and there are no managment tools included in the default installation of WSS. The SSEE management tool, SQL Server Management Studio Express can be used to view and edit some very limited features of a WID. However, the process of connecting to a WID is far from intuitive - rather than using a conventional "[name of server]\[name of database]" connection string, it is actually necessary to use a named pipe "\\.\pipe\mssql$microsoft##ssee\sql\query" as the server name to connect to an instance of WID.

Additionally, and this is the issue that really prompted the writing of this post, the limitations of WID when it comes to other applications seems to throw a very big wrench into the works of FBA.

A conventional implementation of FBA will take advantage of the grunt work already done in asp.net2.0 and utilize the Membership, Role Management, and Personalization services. To use these features, we must use aspnet_regsql.exe to create a db to hold the data associated with these services.

However, WID does not seem to allow this db to be created. It appears to work, but an error message is displayed by aspnet_regsql.exe while trying to create the database which refers to SQL error 33003, and to "unable to execute DDL statement".

While the db appears to exist afterwards, it is devoid of content tables and cannot be populated with data in any way.

In essence, it woudl seem that if you wish to use FBA with a default installation of WSS 3.0 with WID, you cannot do it without also installing SSEE to run alongside of WID for the sole purpose of providing the db needed by the authentication provider.

Monday, February 18, 2008

stuff I need to get for apartment and where to get it from....

Textiles:
-towels
-sheets

Bathroom:
-shower curtain (real canadian)

Closets:
-closet organizer kits
-rubbermaid configurations (real canadian)

Kitchen:
-frying pans (paderno, London Drugs)
-stools for breakfast bar
-freezer
-place settings, bowls
-tablemats
-cutting boards

Furniture:
-table and chairs (Trevor? Ikea? Ungers?)
-couch
-ottoman
-club chair
-computer desk
-bookcases
-end/side tables

Appliances:
-freezer
-vacuum

Bedroom:
-closet organizer
-dresser? (Ikea Hemnes)
-bed frame
-bedside tables

Living Room:
-lamps
-area rug

Electronics:
-tv
-tv stand

STORES TO REMEMBER:
-Ikea
-Real Canadian
-MTF
-Kitchen Corner/Ming Wo
-restaurant supply store
-Rob's Furniture, 1395 United Blvd, Coquitlam (also in Langley)
-LazyBoy, Langley Bypass
-Couch Potato, Langley Bypass
-Ungers, South Fraser Way, Abbotsford
-Valley Direct Furniture, 19853 Fraser Highway, Langley

-Craigslist and Kijiji

Thursday, November 22, 2007

Off-Topic but seasonal: Christmas wish list...

Asus EEE:
dinkiest damn computer you ever saw...

Wishlist at Library Thing:
librarything
Looks like you have to be a member at librarything to see the list, so instead you can see my chapters wishlist, which is roughly the same:
jason's chapters wishlist

iPod Nano
black, 8 gb

iPod Touch
instead of a nano, this would be really cool...

xbox360 games
halo 3
need for speed prostreet
the orange box
bioshock
project gotham racing 4

comfy chairs x 2
from UA - not necessarily these ones but in this style. It's gotta be comfy! or
from lazyboy or
this is the front-runner - also from lazyboy

salt cellar
alton brown salt cellar

instant read digital thermometer
another alton brown thing

safety razor
merkur progress safety razor

blades:
feather double edged safety razor blades


"my own place stuff"
cutlery
pots/pans
sheets/towels
couch
table + chairs
tv/dvd player/amplifier/speakers/cable box
vacuum cleaner
bed frame - hopen from ikea
dresser/wardrobe
freezer/microwave

*********************************
New stuff as of December 4th:

Yoga membership:

Bikram Yoga Abbotsford

Apollo membership fees

ongoing membership fees

Mandolin from Lee Valley

Mandolin

or a cheaper one:
mandolin from Paul's Finest

Mortar and Pestle

low profile mortar and pestle

Jamie Oliver flavor shaker

flavor shaker

thestick

stiff stick or power stick

Blade Runner

complete collectors edition

Thursday, November 1, 2007

undefined is null

Doing a "very bad thing", as according to Microsoft, often has consequences. The other day I tried to add a column to a list in the Sharepoint site I am developing. The form failed, with an error message that "undefined was null".

Huh?

Not one of the more informative messages you could get. Until I started to think it through a little bit. Not only was a variable lacking content ("null"), but the variable itself was missing ("undefined"). This put me on the thread of a passing mention in the article I had based some of my Sharepoint hackery on.

This article was "One Master to Rule Them All", which proposed and illustrated a means of redirecting requests for application.master in WSS and MOSS from the stock file to your own customized version.

In the article, David Wise mentioned that you should, in your customized application.master file:

"Throw any ContentPlaceHolders that you are not using in a hidden DIV at the bottom of the page - but before the closing FORM tag (the only exception to this seems to be "PlaceHolderUtilityContent" which goes in after the closing form tag)..."
Once I tracked down this article, which was the one I vaguely remembered having a warning about placement of a particular contentplaceholder on an application.master page, I reviewed my own application.master page and found that, yes indeedy, I had put the placeholderutilitycontent contentplaceholder in the hidden div rather than immediately after the form closing tag.

Once I changed the file to put the contentplaceholder immediately after the tag, adding the custom column to the list worked just fine.

Phew. I didn't have to go back to square one with the site design like I feared I might when I first ran into this error.