Good morning, I wanted to at least throw in on this conversation as I've been working with .Net and security for almost 7 years at this point. Yes, since the early Beta. A signed assembly is only a requirement for placing an assembly in the Global Assembly Cache, not the other way around. People who are interested in this process should look up the .Net Assembly Discovery Process to see how .Net looks for assemblies at run time. The first place it does check is the GAC. So if you have a signed assembly there that's what will get run, after that it does check your run time directory of the executable.
I would highly recommend signing your assemblies though; it is really considered a basic step in securing your .Net application. This in conjunction with security link demands when calling between assemblies is the only way to prevent attacks such as Man in the Middle and Assembly replacement. Just my two cents. Jonathan L. Wiggs Software Engineering Manager Envision Telephony Inc. ________________________ Office: 206.225.0800, ext. 236 Cell: 206.387.7860 [EMAIL PROTECTED] www.envisioninc.com -----Original Message----- From: GlennDoten [mailto:[EMAIL PROTECTED] Sent: Thursday, June 22, 2006 7:20 AM To: Log4NET Dev Subject: Re: Strong name private key policy Hi Tom. I work at PC Connection and we've been using signed assemblies with .NET 1.1 for two years now, and they are in the bin directory and not GACed. They don't need to be GACed. Keep in mind that an signed assembly is no different than a non-signed assembly except, of course, it has a public/private key pair embedded in it. But this has no effect whatsoever on whether the assembly is run from a bin directory (whether ASPX or not) or whether it is run from the GAC. >From that blog entry: > As you probably already know every asp.net application lives in its own application > domain (a unit of isolation inside an application) To be precise, it should be a "unit of isolation inside a process." > This is true for all assemblies that are not strong named. For example, you wouldn't > want System.Web.dll loaded up into each application domain as it would mean that > System.Web.dll would be loaded once for each application, bad bad bad!!! So strong > named assemblies, irrespectively of where they are loaded from are loaded into a > shared domain (they are domain neutral). This paragraph really doesn't make sense. The reloading of signed assemblies in the bin directory (so long as they are not in the GAC also) occurs just the same as it does with non-signed assemblies. Try it. We've been doing this exact thing for a long time. Then she mixes a GACed assembly (System.Web.dll) with other assemblies that are signed but not in the GAC. Bad, bad, bad! This is comparing apples and oranges. And signed assemblies are most definitely *not* loaded into a shared address space (and I don't know what "shared domain" and "domain neutral" means here--GACed assemblies are in memory only once, not per app domain or anything like that). > For these reasons it is not supported to store strong named assemblies in the bin > directories of ASP.NET applications in 1.1. That's just plain wrong. It works fine in not only 1.1 but 1.0 also. And in 2.0. A Chris who replied to her blog points to this article: http://www.gotdotnet.com/team/fxcop/docs/rules.aspx?version=1.32&url=/De sign/AssembliesShouldHaveValidStrongNames.html This is exactly why you want to sign assemblies. The primary reason is not so that they can be GACed (although that is certainly necessary at times) but so that the assemblies can be trusted by a client. Not only do signed assemblies work just fine without any of the supposed problems this blogger points out they also work just fine in the bin directory of a console app and/or a Windows Forms app. Been doing both since .NET 1.0 with no problems at all. I also know a lot of web site developers that also keep their signed assemblies in the ASPX bin directory. So I have years of empirical evidence refuting how signed assemblies work. Jeffrey Richter's books are extremely good at describing how all this works and it's even supported. Hope this information proves useful. -glenn- On 6/22/06, Whitner, Tom <[EMAIL PROTECTED]> wrote: > Glenn, > > Please refer to the following articles - > > http://support.microsoft.com/?kbid=324519 > http://support.microsoft.com/default.aspx?scid=kb;en-us;813833 > http://blogs.msdn.com/tess/archive/2006/04/13/575361.aspx > > These all indicate that running ASP.NET applications with strong > named assemblies deployed to the bin folder is not supported in .NET 1.1 > or 2.0 as well as some of the symptoms might be experienced. > > Thanks, > Tom > > -----Original Message----- > From: GlennDoten [mailto:[EMAIL PROTECTED] > Sent: Wednesday, June 21, 2006 10:19 PM > To: Log4NET Dev > Subject: Re: Strong name private key policy > > Not true, Tom. Just because an assembly is signed does not mean it > must be in the GAC to be used by ASPX. We run non-GACed, signed > assemblies with ASPX in production all the time. > > FYI > > On 6/21/06, Whitner, Tom <[EMAIL PROTECTED]> wrote: > > We are facing a similar question with some internal code. We have > > decided, at least for now, to produce both strong named and non-strong > > named binaries. Most agree that the strong named option is preferred. > > However, due to ASP.NET'sbehavior when loading strong named assemblies > > (i.e. it requires the GAC), not all individuals can/will tolerate GAC > > installation on highly locked down server. Hence, having the > non-strong > > versions has become a necessity. > > > > - Tom >