Re: Implement AuthenticationButton for anonymous and integrated access

From: James M. Parker (no_at_spamever.com)
Date: 05/14/04


Date: Fri, 14 May 2004 07:47:10 -0400

Setting Up Your Anonymous Portal

        Submitted By: Zandy Garrard, Magenic Technologies
      Posted On: 8/20/2003

      Overall Rating: 4.33 (12 ratings, 12 comments)

Description:
One question I've seen quite a few times is: "How can I make my Portal
available to the Internet?" In other words, how can I turn on anonymous
access for my Portal? It's actually not that difficult.just a few IIS and
Portal settings, but you'll also want to be able to manage your portal,
which can be a little difficult without the proper planning. Setting Up
Anonymous Access. 1. You'll want to set your portal up for anonymous access.
Go to your site settings for your portal and choose Manage security and
additional settings. You're then presented with another page of options -
choose Change anonymous access settings. You can then choose to allow
anonymous users access to Areas and content or Areas, content and search. 2.
Go to IIS and on your properties for your portal web site, choose Directory
Security. Choose the "Edit." button under Authentication and Access Control.
You'll notice that "Enable Anonymous Access" is not checked, but Integrated
Windows Authentication is checked. Check the Enable Anonymous Access option,
but also leave the Integrated Windows Authentication option checked as well.
I'll explain why later on. You now have a site that can be accessed by all
users, regardless of whether they have an active directory account on the
SharePoint domain. In fact, all users come in as anonymous, whether or not
they are part of the SharePoint domain. However, enabling anonymous access
has two "side-effects." First, you might notice that if you manually
navigate to http://portalsite/_layouts/1033/default.aspx, you can access
this page. This is the page that allows the portal administrator to
administer the site. While it might seem that this is a BIG security hole,
it seems that all actions from this page require the user to log in with the
correct credentials in order to modify anything. They will be able to see
your web part dwp files that are "installed" on SharePoint, your site
templates and your list templates, but they cannot modify them without first
entering valid credentials. I don't know if there is much you can do about
this; the directory in which this page resides needs to allow anonymous
users because of some other files that are contained in there. For instance,
there are many javascript files in the _layouts/1033 directory (.js) that
SharePoint uses in the portal to which anonymous users need to be able to
access (e.g. ows.js) in order for the pages to work properly. If the
_layouts/1033 directory does not have anonymous access enabled, anonymous
users will be prompted to log in to access these javascript files. The
second "side-effect" is that you, as the administrator, will find it
difficult to modify the pages. You can do something about this, but it
requires a little programming AND it requires that you implement this before
you turn on anonymous access. There is a class provided with the SharePoint
object model called the Authentication Button class. This class allows you
to create an Authentication button that, when clicked, will prompt users to
login. They will then validate against the active directory and, if
authenticated, allowed access to SharePoint as the logged in user versus an
anonymous user. The details on this class are here:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/spptsdk/html/smpcauthenticationbutton.asp.
To implement this, simply create a web part and create an instance of the
AuthenticationButton class and render it. Here's the code that I've used:
public class WebPart1 : Microsoft.SharePoint.WebPartPages.WebPart { private
AuthenticationButton AuthButton; protected override void
RenderWebPart(HtmlTextWriter output) { AuthButton.RenderControl(output); }
protected override void CreateChildControls() { AuthButton = new
AuthenticationButton(); Controls.Add(AuthButton); } } Furthermore, I create
an area on my portal, which I usually exclude from the navigation structure,
and put this web part on this area. I tell the people that should be able to
log in to navigate to this area, where they can see my web part with the
AuthenticationButton class implemented. They click the login button, enter
their user name and password, and they're in. However, there is one final
setting that you need to make to your web.config in order for the
AuthenticationButton class to work properly in the portal (this button wasn'
t designed with the Portal in mind, but when you add this setting, it should
work just fine). Add the following node under the <configuration> node in
your web.config: < appSettings > < add key="SPS-EnforceIISAnonymousSetting"
value="false" / > < /appSettings > Note: I received this last tip from
Microsoft, but unfortunately I wasn't able to follow-up on what exactly this
setting is doing. If you have any questions regarding this article, please
feel free to use the discussion boards on this site or email me directly at
ZandyG@Magenic.com
"Wei-Dong XU [MSFT]" <v-wdxu@online.microsoft.com> wrote in message
news:qdDgnfWOEHA.3892@cpmsftngxa10.phx.gbl...
> Hi SizzleMaster,
>
> The Url you mentioned is one secure page. I have no permission to view
that.
>
http://www.msd2d.com/Content/Tip_viewitem_03.aspx?section=Sharepoint&id=a467007f-2633-4cf9-b4b6-b08b0d3cb485
>
> It will be greatly appreciated you mail that article to me if permitted so
that I can research this for you. My email address is: v-
> wdxu@online.microsoft.com(please remove online from the email address used
to aviod the spam)
>
> Look forward to your reply!
>
> Best Regards,
> Wei-Dong Xu
> Microsoft Product Support Services
> Get Secure! - www.microsoft.com/security
> This posting is provided "AS IS" with no warranties, and confers no
rights.
>

begin 666 smallImage.gif
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
MB[Q\&0<'UQ 3*"7]U) "%F<TX@(0&3_4`!AQ)&#)*CH/,@<Q@X@+BQ@QC/.
M%-D<D80+:KIPB$L172!I`JNL0LP>;.CBQ2#((-,-UP?(^$ VE8#_HP4?-RA2
M%407Q"' &9ZL`C>\7HC!=0R#C,/&.-EHP887?]<J>'T[!'%&'A3"^P(OXH@C
M.2TYI'Y W%K$$LNGK P>D1P#Y &(%['40\HKKXC133<2Y'" !+0\H LM]]SS
MA@O:5&2%)6:8\H(^[UCQRC-BU("I! <,KX4N.=AQ!0XOT%&1$WF8XD0]9,]P
M0 R30#,#IDG<D402X(N/PP/"3C2/)6LXP8S,$8(0D&(<<R '/8AG@#>0H75V
M"$,$JB$[B#@@$EB0@A2@X((9Q"$$*#A$*&3 @Q*FX!0O,,$0[!"!"D9$&J7
MP@FD8"$S$ ,:P-@%,&IP"CS4(!,MJ,0+_\CP!/-]I <#&( ?2B&%$R1N!GN
MABJF2(X82. /`7@!#EKXDG6,8@`TL((5_$ )2ICC" 9"'22N\ 0>R, "1H@=
M8U!P.#^$(@A8>$8-E-#$4KC""$_X@PE,4()(-(\B#>B#-&:1"0$,( A^P.,S
M]/B*&M#@#I HD"/&\(-(-,UI/4!%-)8P@'XXTA(,",*UP "&&I B%7>X0RE\
M080LX ,?GVQ(`^11A$> ,!/]`,'A&," 0QR"!IZHQ T"P,Q/. ("6;!EOQH"
MAQ6@8@K12$0B4# *1R+.#\1T@BT"X I7" ,"Y\@"-(DP"Q<FY!?6B,((BK $
MA(TB$WP:@-08X/^$4)P`"LX<`P2@&4TB$ $?TU0(%99 B(9>0A.)N&<B. ""
M!.2!`>@I10#&, 8B<,&66>!H(UBP&(=0800,18<&1-&!47 3!" `0Q[\8 4G
ME&) )3""$7Z0!2*,@0M0&(8UW'D0="QA!)I8`AI$`0(4)"(RSP"#)?SY3PIT
MM 1<^.@/B!"&# S#%@T@:D$,<514A&,96<!#2V$A@&><HAAF^"<4!L0%(OP`
M`?.0`P]<P8(0!.$#N3P(*I*QA&3<8A/'@$$A1G"+%H#A%&;P)Q0"8($P1.*R
M6RT!#F@P#!8$(0K8:, .J)(05&QA!"- !QHVD08?",('Y\ 6+&4YUQ+_( `!
M/Q!&)+@0`&6$( -H6$8K-N &>&PC(6F P18*6P8TH$$#74C#%PI1CE3(P!&E
MT*@P=!H)!)3@#I,I1!3"40<,%$ $!0C$!Q+ZCWAT00,P&($AVE"$*&QA"S8`
M12MJ48H2?.(.Y#0";@. !18`X1R=T(,>RHM>$;1"`_PX" #2T(4V:" 998B'
M'K90!WO$(Q@K^$0A(!" 3VCB$Y]@0":0D 4/5$$2*NA"+]S0X VT-J%,2 ,`
MXD$`&!B""8:0A"2.L05V3%<8PG"$+U)0W5$HXPNR4,$&HN"!-&C #><5@8T)
M((C^"004`````130AF2D`11U2(,A3+N/+S@B_P!++@86. `$#!! !4*P01V^
M06%$-'@"!"# !C#0@]B @@!B5@`!#*$!&W<!`#[^@#$*D8(4%*,)'%"&!U2@
M@@I@H!<%Z(2.A5"%`E1!`0I@@J)!L8T+".70@)Z `KI@@U:(P 8$2$,;/@"*
M+_CB%,_@``M:,0$8"*$"`-! )[@!`&/XV=03F,"A`SV!+Q GU=&NP@8(H(%X
M%"#03&""!M*P`04\0P"9,(0LZN"!"LBB"R(0@@<`4 !$E+H*50!TF'4\`4'
MH16@4("L16",+G1!`?/.-0"ZT(IO(.P6!9C !BI0@0D``!&=V'8G7 QM)H29
MUC" 01<"L0)C;&"X'C# `"CBT0I9%* 58RZY#\KP9 ]T@N(^,(8'A- )D\N[
3``4PA@(.[5X-E $5J(A'0 ``.P``
`
end

begin 666 printicon.gif
M1TE&.#EAR `>`*4``/____S\^J:CFIF9F:"@G^3DY/'Q\7-R<JC/W]?7U]W=
MW;*RKV1C7[:VMO7T].OKZXN)A4C'[4 _/,+"POCX^-%\S.GIZ,_/SZBHILQC
M4?:@F,G)QZVMK5%03LR['O3H<+N[N]+2TO3T].GIZ<?'Q["PL*6EI?______
M____________________________________________________________
M_________________________________RP`````R `>```&_D" <$@L&H_(
MI'+);#J?T*AT2JU:K]BL=LOM>K_@L!@:$ S,@[1Z0"B,W_"X'& X#!")O#ZA
M6# :#G."@X12#Q 1$4@/#!(3A9"1DD(4!P<51@X/%A80#9.@H6,7& T0&1I#
M%AL*"1L3#P00'!.!HK>X5@P=$! >'T(.`AP*1 ,2!Q+%N<S-378$';P.!A<+
M1@,=&PS+SM[?0P<0`@P)I!L-%$80'1/<52 A2@HB5",@($;Q5OOW(W'["HGC
MP,!!@0U)LFWK)B7@$1$#&#X9,<!$OB(.IPS(IR B0'F$`C" D.U"`046-G%:
MV8F!GPM(%(P0(7-(S6(U:8K0"4 $_HD!).@)H=E-IXA_0D;\# K@9E.D/144
MI<=SR(AB&YM&O#J$9E>A0L!>A<IU)H"Q-J'25$L5K)8`V1C(%6>IKMT#<^5*
M%#*@A(DTRS;^!9"U(P@U5]?@5&.B7L>?%P$<5D,8Q."L6M,TUCIY`-+)ASE&
M#.$1`(D273%3K-?YXN&?"EKSO4@Z#6K.B+<T.& +0( `E'[[#D !. `'%DP9
MP.890(D!?/MB%=W8L-9E%$F<!9J9!-3KT4M,WZX]N];J62GF(RV:'F83((4\
M%P("]<]_]R57#$%:GN5ZZ17&74?H18;%`01$$< $!#2@#3:T>531$ *"). R
ML$DUWV-&_G04F D4YI.A`AL.8&$^A]53&7B';:>B$*1A)8\)XDF5U6'_$!@"
M5%G]I&*))V[1CA07"'"!2Q"&)6%D%\X&GG[X1 E>1X!YZ*23H479'I;0.6EE
M1R&<5@1$('3$ET51^M>E?IK]<^.:+5JYHA9#0N' `APTP `'20(0XYPKRMFD
M?AUZ1!0]@C*)XIHVE?9FB$_2")\^&UV$&1$M?@79BC[*!V*B0CX"!043Y(ED
M$6G,-!^@@U:85%8BT/@D$: ZJ5Y/LH(*IFF#_C3 BXV6!IM6:BI9#)DKWLIA
MK5D\& 4%#S#")ZI^`79EH(Y>])='OE;D6&FT9@LIKYI]&YAKM&F$]B1%MS'7
MU7/ITM=EK(P!&&&\3UZ*A;-2B#2M,2"LE=; 5=44%EA$?07L4& 9_-174ZGH
ML%0/5T58?$6,\-U9#G-EU<1LL27QQE:(@\')**>LLLH*]0G.%0IT^C(4"MQE
ML\T0X(47!L8!//,5UO[\!%P,6-)!T3?7)4U="0CMM"@.,("!*Q=L<,'556^0
G@-1/=RT*!0NH`0$!`Y D-@1[>:WVVFRW[?;;<,<M]]QTUUU$$ `[
`
end

begin 666 addtofavsicon.gif
M1TE&.#EAKP`>`.<``/?CX__EY?^MK]]25-1I:__#Q/J#A-4S.+L;(_^+CO^
M@_UA9.$R-[$)$.S%QO^/D/YC:/1 1]<E+<8=(^*)B__5UO^8F?]B:/9%3.Q&
M3/I]@?EF;.M15>-V>?[DY?!O<^]36.P\1.HX/.U76?^?G_^)B/UF:^U"1\\F
M*N68FO37V/O=W/K2T=]P=<XL,, *$.P]//IC8_^#A/^3D_^-D/UR=_125]TM
M,M9'2MR @_GJZ_R[N_-]?]1-4^R]OO/4U>J7EMLU-OMB9_^)C?^6F/^4E_]]
M@/QB9.\^0M4F)[ )#_^/DOMM;L\C)\$X.O?IZ=+2TKN[N^[3T\=:6^<U._]B
M9/^$AO^<GO^4E?^%A?]E:/9*3-XQ-O-G;/)-3M\P,O&TMIF9F<P_1.8Z._MB
M9?^%A_^9F_^3EOYR=/YX>_ID9_1"1_1U>NKJZMW=W>[)RNR/D>I"1/YF9?^%
MAO^7FO^+C_^"AO]:7OU77/S;W,?'QZ6EI;"PL/;6V,L:(/5#1?]J:O^"A_QZ
M?OYY?/]I:?^6F;4S-=PP-_5%2OYZ??^+C?YV>O]Z?_^&@_[3T__ PO!K;_5L
M;_^*C?YZ?_]O<_^6A_OWMOOLTO_GZ/^/D_Z)C/9>9/Y57/Q56O^LK?_=WN+7
MPOC3A\ZP=^_GV?^3F/-S=N,]0NQ 1OIB9O[MR>G-C_GIP=%A9,@C)]A-3_2Y
MN?GNV."U9N;%@^R[O.*3D_?NWOSTK_KMR>SDU_#8H^'#@-C$F_WVY_7AM/;:
ME?;OX_7JT\ZE7_;@M___________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M_____________________R'Y! $*`/\`+ ````"O`!X```C^`/\)'$BPH,&#
M"!,J7,BPH<.'$"-*G$BQHL6+&#-J? A@H\>/($-J#"!@``&1*%.J7/FO@($#
M"%C*G$D38@(%"Q@T<%"SI\^>!1Y B"!A`H6?2).*K&#A`H8,&C9PZ*"TJM6*
M'CZ ""%B!(D2)DZ@2*%"X H65].J-=C"Q0L8,63,H%'#Q@T<.73LX-&#Y]J_
M5WW\`!)$R! B18P<09)$R1(F39P\N0@EBL'*!MW0U!.EC<<H4 1J[BEE"I4J
M5JY@R:)E"Y<N7KZ P1@EC,':!L.,7KDG3.?/H?_I_BEF#)DR9LY809-&S1HV
M#MNXV3U0,^[J_ZX/U!-&#W4WG@W^2O\W7O3H\J()N@G#9_?T\.C_N?_N63/X
M?]R]JZ<NGW_&-W#$(<<<=!11AQUWX)%'0[6%X: >HCFX!Q^VR2<AA>HYZ*!F
M4&C(QVV^:=A&;[[]T^%H>GP8H8;3:1C&'B8.A]^'(TH8GF^]"1?%>BQ:*.&*
M+X+4AQ]_`!(($8(,0D@A#8T(X3\8_K,'C,)5.*5 #A:TWGDEKO?D0+59MMX>
MU@U7HI3!#70F'RIRI]F9881VI914.MB>CA9R"6$;W0GWX98@&7(((HDHL@@C
MC3@"T708KA<<;HX*I%V$*%8(I:626GHFH+CQF9ME`TGGYJ46DA>G0"<*1R6>
M@.*G&Z/^MCWHGT:/0!*)))-04HDEESC$W1Y1Y-@JI#).FF>F8&*:G::@`NIH
MBI^*UEL4%'*H6Q1BR@CHF:P6ZQNVV/KH8)H:89*))IMPTHDGGX 2BBBC+,3G
MH[8-6Z^W6LK(W4!\K(HLELW*..$>Y (LT(24`CS<O*B&X1FW7>)[D!M0Y/@1
M*:68<@HJ'@B4BBJK+!0IGQ6R9VK)-&:987!\9OOEOW@>ZZJR!OLI4+696CKG
MG!!GR_*9" -[,\T8L=***Z\4!$LLLBQ$XH05\@CUBE,71**U#H)*D':;RLBG
MB@6=R5W6VG);8Y UQWSUS&@WN&%(L]!R4"VVW"+R:+N-AYY3WK-.IUYX!:%W
M7WIJ%BP:X.4-+E]F]%4'N-_5\0=Y3;CDHLLN@"GDQKZ9*\5++[[\TOE!;X^N
?%##!F*XZ8,*L[OKKL,<N^^RTUV[[[;CGKCON`0$`.P``
`
end

begin 666 fish.gif
M1TE&.#EA%P`(`*4``-JXA<&),\B41^#$F?/GUM>R>K)K`+-N"+5\)K1Y'\N:
M4OOW\NG6N./*H[F47,.WIMG9V<K'PKVOFKB-3;-R#[5Q"N;0K<Z@7+M]'[AW
M%,6=8>;FYLJ_KK:&/;1U%[>*1<>K@.?6O<&MC^'+J,&02,VK>.CHZ+B05+Z#
M*?#AS,W-S;ZGA=V^C]/-Q;RE@][>WM31S+NA>]?7U\.LBKZRH<K*RMO5S.W;
MPO_______________________________R'Y! $*`#\`+ `````4``@```9J
MP)_P!P@8!0/"<+DL& Z(:,)@4"B'"T:#:' \(."(9$*I``B6"\:081@T3.&&
MTZ$:/!]02&3 7)DC)'8>)4(F)P8H6T(I*0I/'RHK4QDL/RT.5"A&=@DN+T(P
2,0DH0C(S"!Y4>#0U<38W00`[
`
end

begin 666 fishhalf.gif
M1TE&.#EA#0`(`*4``-JXA<&),\B41^#$F?/GUM>R>K)K`+-N"+5\)K1Y'\N:
M4OOW\NG6N./*H[F47,.WIMG9V<K'PKVOFKB-3;-R#[5Q"N;0K<Z@7+M]'[AW
M%,6=8>;FYLJ_KK:&/;1U%[>*1<>K@.?6O<&MC^'+J,&02,VK>.CHZ+B05+Z#
M*?#AS,W-S;ZGA=V^C]/-Q;RE@][>WM31S+NA>]?7U\.LBKZRH<K*RMO5S.W;
MPO_______________________________R'Y! $*`#\`+ `````-``@```9)
MP)_P!P@8!0/"\%<P'!#0A,&@4 (,C@=D&Y%,*!6&0;,<;C@=D0&C+/]&)-/)
>@&H,4RF%\]=R3%%&4P8)+D(R,P@>4QX?-#4_00`[
`
end


Loading