Está en la página 1de 31

Captulo 10: Seguridad de

servicios Web
Crear aplicaciones ASP.NET
seguras
Autenticacin autori!acin "
co#unicacin segura
J.D. Meier, Alex Mackman, Michael Dunner y Srinath Vasireddy
Microsoft Corporation
Octubre de !!
Consulte la "#$ina de entrada como punto de partida y para obtener una descripci%n
completa del documento Crear aplicaciones ASP.NET seguras.
Resumen
&ste cap'tulo se centra en la se$uridad de los ser(icios )eb en el ni(el de la
plataforma, mediante las caracter'sticas subyacentes de **S y AS".+&,. "ara la
se$uridad de los mensa-es, Microsoft est# desarrollando el kit de desarrollo de
ser(icios )eb, .ue permite $enerar soluciones de se$uridad conforme a la
especificaci%n )S/Security, .ue forma parte de la iniciati(a 0lobal 1M2 Architecture
301A4.
Contenido
Modelo de se$uridad para los ser(icios )eb
Ar.uitectura de se$uridad para plataformas5transporte
&strate$ias de autenticaci%n y autori6aci%n
Confi$urar la se$uridad
,ransmitir credenciales para la autenticaci%n de ser(icios )eb
,ransferir el llamador ori$inal
Subsistema de confian6a
Obtener acceso a recursos del sistema
Obtener acceso a recursos de red
Obtener acceso a los ob-etos COM
7tili6ar certificados de cliente con los ser(icios )eb
Comunicaci%n se$ura
8esumen
&n este cap'tulo se describe c%mo desarrollar y aplicar las t9cnicas de autenticaci%n,
autori6aci%n y comunicaci%n se$uras para prote$er los ser(icios )eb de AS".+&, y
los mensa-es de los ser(icios )eb. ,ambi9n se describe la se$uridad desde el punto
de (ista de los ser(icios )eb y se explica c%mo autenticar y autori6ar los llamadores,
adem#s de c%mo transferir el contexto de se$uridad a tra(9s de los ser(icios )eb.
&ncontrar# tambi9n informaci%n, desde la perspecti(a del cliente, para llamar a los
ser(icios )eb mediante credenciales y certificados para admitir la autenticaci%n por
parte del ser(idor.
Modelo de seguridad para los servicios Web
2a se$uridad de los ser(icios )eb puede aplicarse en tres ni(eles distintos:
; Se$uridad 3de punto a punto4 para plataformas5transporte
; Se$uridad 3personali6ada4 para aplicaciones
; Se$uridad 3de extremo a extremo4 para mensa-er'a

Cada enfo.ue ofrece una serie de beneficios y des(enta-as, .ue se detallan a
continuaci%n. 2a elecci%n del enfo.ue depende en $ran medida de las caracter'sticas
de la ar.uitectura y las plataformas .ue (ayan a utili6arse para el intercambio de los
mensa-es.
Nota: ten$a en cuenta .ue este cap'tulo se centra en la se$uridad de plataformas
y aplicaciones. 2a se$uridad de los mensa-es se efect<a mediante la iniciati(a de
ar.uitectura de ser(icios )eb 1M2 $lobal 301A4 y, en especial, la especificaci%n
de se$uridad )S/Security. Durante el per'odo de escritura de este documento,
Microsoft ha lan6ado una (ersi%n de tecnolo$'a de prueba de )eb Ser(ices
De(elopment =it 3)SD=4. De este modo podr# desarrollar soluciones de
se$uridad para mensa-er'a conformes a la especificaci%n de se$uridad )S/
Security. Si desea obtener m#s informaci%n, consulte
http:55msdn.microsoft.com5>ebser(ices5buildin$5>sdk5 3en in$l9s4.
Seguridad (de punto a punto) para
plataformas/transporte
"uede utili6arse el canal de transporte entre dos puntos finales 3cliente de ser(icios
)eb y ser(icios )eb4 para $aranti6ar la se$uridad de punto a punto. 2a ilustraci%n
?!.? refle-a este escenario.
$%nsert &gure: C'10 ( Web Services Securit" ( Transport )evel.gi*+
*lustraci%n ?!.?
Seguridad para plataformas/transporte
Cuando se utili6a la se$uridad de plataformas, .ue presupone un entorno de sistema
operati(o Microsoft@ )indo>s@ estrechamente inte$rado, por e-emplo, en intranets
corporati(as:
; &l ser(idor )eb 3**S4 proporciona autenticaci%n b#sica, impl'cita, inte$rada y
mediante certificados.
; &l Ser(icio )eb de AS".+&, hereda al$unas funciones de autenticaci%n y
autori6aci%n de AS".+&,.
; "uede utili6arse SS2 y5o *"Sec para aplicar capacidades de inte$ridad y
confidencialidad para los mensa-es.

Escenarios de uso
&l modelo de se$uridad para transporte es sencillo, bien diseAado y adecuado para
una $ran (ariedad de escenarios 3b#sicamente para intranets4, en los .ue los
mecanismos de transporte y la confi$uraci%n del punto final pueden controlarse de
forma exhausti(a.
2os principales aspectos .ue deben tenerse en cuenta con relaci%n a la se$uridad
del transporte son los si$uientes:
; 2a se$uridad se inte$ra estrechamente con la plataforma subyacente, el
mecanismo de transporte y el pro(eedor de ser(icios de se$uridad 3+,2M,
=erberos, etc.4, de los .ue tambi9n depende.
; 2a se$uridad se aplica de punto a punto, sin crear pro(isiones para saltos
m<ltiples ni enrutamiento a tra(9s de nodos de aplicaci%n intermedios.

Seguridad para aplicaciones
Con este enfo.ue, la aplicaci%n se hace car$o de la se$uridad y utili6a las funciones
de se$uridad personali6adas. "or e-emplo:
; 7na aplicaci%n puede utili6ar un encabe6ado SOA" personali6ado para
transferir las credenciales de usuario y autenticar al usuario con cada solicitud
de Ser(icio )eb. 7n enfo.ue habitual consiste en transferir un (ale 3o nombre
de usuario o licencia4 con el encabe6ado SOA".
; 2a aplicaci%n tiene la flexibilidad de $enerar su propio ob-eto Irincipal con
funciones incluidas. "uede ser una clase personali6ada o la clase
!enericrincipal .ue se proporciona con .+&, Brame>ork.
; 2a aplicaci%n cifra de forma selecti(a lo .ue sea necesario, aun.ue re.uiere un
almacenamiento se$uro de la cla(e y .ue los desarrolladores ten$an
conocimientos de las A"* de cripto$raf'a pertinentes.
7na t9cnica alternati(a consiste en utili6ar SS2 para ofrecer confidencialidad e
inte$ridad, adem#s de combinar SS2 con encabe6ados SOA" personali6ados
para lle(ar a cabo la autenticaci%n.
Escenarios de uso
7tilice este enfo.ue si:
; Desea apro(echar un es.uema existente de base de datos de usuarios y
funciones .ue se utili6a con la aplicaci%n actual.
; Desea cifrar partes de un mensa-e en lu$ar de la cadena de datos completa.

Seguridad (de e"tremo a e"tremo) para mensa#er$a
Se trata del enfo.ue m#s flexible y efica6 y el .ue utili6a la iniciati(a 01A, en
especial para la especificaci%n de se$uridad )S/Security. 2a se$uridad de mensa-es
.ueda esbo6ada en la ilustraci%n ?!..
$%nsert &gure: C'10 , Web Services Securit" -essage )evel.gi*+
*lustraci%n ?!.
Seguridad de mensajes
2as especificaciones de se$uridad )S/Security describen las me-oras reali6adas en
la mensa-er'a SOA" y .ue permiten disfrutar de inte$ridad, confidencialidad y
autenticaci%n para los mensa-es.
; 2a autenticaci%n se obtiene mediante testi$os de se$uridad, .ue se transfieren
en encabe6ados SOA". 2a especificaci%n de se$uridad )S/Security no
re.uiere nin$<n tipo de testi$o espec'fico. 2os testi$os de se$uridad pueden
incluir (ales =erberos, certificados 1.C!D o un testi$o binario personali6ado.
; 2a comunicaci%n se$ura se obtiene mediante firmas di$itales .ue $aranti6an la
inte$ridad de los mensa-es y el cifrado 1M2 para la confidencialidad de los
mensa-es.

Escenarios de uso
2a especificaci%n de se$uridad )S/Security puede utili6arse para crear un marco de
intercambio de mensa-es se$uros en un entorno de ser(icios )eb hetero$9neo.
8esulta id%nea para entornos y escenarios hetero$9neos en los .ue no se detenta el
control directo ni de la confi$uraci%n de los puntos finales ni de los nodos de
aplicaci%n intermedios.
Se$uridad de mensa-es:
; "uede ser independiente del transporte subyacente.
; "ermite una ar.uitectura de se$uridad hetero$9nea.
; "roporciona se$uridad de extremo a extremo y permite el enrutamiento de
mensa-es a tra(9s de nodos de aplicaci%n intermedios.
; Admite (arias tecnolo$'as de cifrado.
; Admite el m9todo de no recha6o.

Web Services %evelopment &it (WS%&)
)eb Ser(ices De(elopment =it ofrece las A"* necesarias para administrar la
se$uridad, adem#s de otros ser(icios tales como referencias de enrutamiento y de
mensa-es. &ste kit cumple los est#ndares m#s recientes de los ser(icios )eb como
la especificaci%n de se$uridad )S/Security, lo cual permite la interoperabilidad con
otros pro(eedores .ue aplican las mismas especificaciones.
M's informaci(n
; "ara obtener las <ltimas no(edades acerca de )eb Ser(ices De(elopment =it
y la especificaci%n de se$uridad )S/Security, consulte la p#$ina del centro de
desarrolladores 1M2 de MSD+ en http:55msdn.microsoft.com5>ebser(ices5 3en
in$l9s4.
; "ara obtener m#s informaci%n acerca de la especificaci%n de se$uridad )S/
Security, consulte la p#$ina de 'ndice de la especificaci%n de se$uridad )S/
Security en http:55msdn.microsoft.com5>ebser(ices5default.aspEpullF5library5en/
us5dn$lobspec5html5>ssecurspecindex.asp 3en in$l9s4.
; "ara obtener m#s informaci%n acerca de la ar.uitectura 01A, consulte el
art'culo G7nderstandin$ 01AG 3en in$l9s4 de MSD+.
; "ara obtener acceso a las discusiones del tema, consulte el $rupo de noticias
de interoperabilidad 01A en MSD+.

)r*uitectura de seguridad para
plataformas/transporte
2a ilustraci%n ?!.H muestra la ar.uitectura de se$uridad de la plataforma de
ser(icios )eb de AS".+&,.
$%nsert &gure: C'10 , Web Services Securit" Arc.itecture.gi*+
*lustraci%n ?!.H
Arquitectura de seguridad de servicios Web
2a ilustraci%n ?!.H muestra los mecanismos de autenticaci%n y autori6aci%n .ue
incluyen los ser(icios )eb de AS".+&,. Cuando un cliente llama a un ser(icio )eb,
se desencadena la si$uiente secuencia de e(entos de autenticaci%n y autori6aci%n:
?. Se recibe la solicitud SOA" de la red. Dicha solicitud puede o no contener
credenciales de autenticaci%n, lo .ue depende del tipo de autenticaci%n .ue se
est9 utili6ando.
. Opcionalmente, **S autentica al llamador mediante la autenticaci%n b#sica,
impl'cita, inte$rada 3+,2M o =erberos4 o mediante certificados. &n entornos
hetero$9neos en los .ue no es posible aplicar la autenticaci%n de **S
3)indo>s4, **S se confi$ura para la autenticaci%n an%nima. &n este escenario,
el cliente puede autenticarse mediante atributos de los mensa-es tales como
(ales transferidos a tra(9s del encabe6ado SOA".
H. **S tambi9n puede confi$urarse para .ue acepte solicitudes <nicamente de los
e.uipos cliente con unas direcciones *" espec'ficas.
I. **S transfiere el testi$o de acceso a )indo>s del llamador autenticado a
AS".+&, 3.ue puede ser el testi$o de acceso del usuario de *nternet an%nimo
si se ha confi$urado el ser(icio )eb para la autenticaci%n an%nima4.
C. AS".+&, autentica al llamador. Cuando AS".+&, se confi$ura para la
autenticaci%n de )indo>s, no se efect<a nin$<n otro tipo de autenticaci%n
adicional en esta etapa e **S se limita a autenticar al llamador.
&n caso de utili6are un m9todo de autenticaci%n distinto de )indo>s, el modo
de autenticaci%n de AS".+&, se establece en nin$uno a fin de permitir la
autenticaci%n personali6ada.
Nota: la autenticaci%n mediante Bormularios y la autenticaci%n de "assport no
son compatibles con los ser(icios )eb.
J. AS".+&, autori6a el acceso al ser(icio )eb solicitado 3archi(o .asmx4
mediante la autori6aci%n de direcciones 782 y de archi(os, .ue utili6an los
permisos +,BS asociados con el archi(o .asmx para determinar si debe
concederse el acceso al llamador autenticado.
Nota: la autori6aci%n de archi(os s%lo es compatible para la autenticaci%n de
)indo>s.
A fin de disfrutar de una autori6aci%n de $ranularidad precisa, tambi9n pueden
utili6arse las funciones .+&, 3mediante declaraciones o pro$ramaci%n4 para
$aranti6ar .ue el llamador reciba autori6aci%n para obtener acceso al recurso
solicitado o para lle(ar a cabo la operaci%n solicitada.
K. &l c%di$o del ser(icio )eb obtiene acceso a los recursos locales o remotos
mediante una identidad determinada. De forma predeterminada, los ser(icios
)eb de AS".+&, no lle(an a cabo nin$una suplantaci%n, por lo .ue es la
cuenta de proceso AS".+&, confi$urada la .ue proporciona la identidad. Otras
opciones alternati(as incluyen la identidad del llamador ori$inal o una identidad
de ser(icio confi$urada.

E*uipos selectores
2os e.uipos selectores del ser(icio )eb de AS".+&, son:
; **S
; Si se deshabilita la autenticaci%n an%nima de **S, los ser(icios **S s%lo
permitir#n solicitudes de usuarios autenticados.
; 8estricciones de direcci%n *"
**S puede confi$urarse para .ue acepte solicitudes <nicamente de e.uipos
con unas direcciones *" espec'ficas.
; AS".+&,
; &l m%dulo L,," de autori6aci%n de archi(os 3exclusi(amente para la
autenticaci%n de )indo>s4
; &l m%dulo L,," de autori6aci%n mediante direcciones 782
; "eticiones de permisos "rincipal y comprobaciones de funciones expl'citas

M's informaci(n
; "ara obtener m#s informaci%n acerca de los e.uipos selectores, consulte
G&.uipos selectoresG en el cap'tulo M, GSe$uridad de AS".+&,G.
; "ara obtener m#s informaci%n acerca de c%mo confi$urar la se$uridad,
consulte el apartado GConfi$urar la se$uridadG .ue fi$ura m#s adelante en este
mismo cap'tulo.
Estrategias de autenticaci(n + autori,aci(n
&n esta secci%n se exponen las opciones de autori6aci%n 3tanto confi$urables como
pro$ram#ticas4 disponibles para un con-unto de es.uemas de autenticaci%n
utili6ados de forma habitual.
2os es.uemas de autenticaci%n .ue (an a describirse se indican a continuaci%n:
; Autenticaci%n de )indo>s con suplantaci%n
; Autenticaci%n de )indo>s sin suplantaci%n
; Autenticaci%n de )indo>s con identidad fi-a

)utenticaci(n de Windo-s con suplantaci(n
2os si$uientes elementos de confi$uraci%n muestran c%mo habilitar la autenticaci%n
de )indo>s 3**S4 y la suplantaci%n mediante declaraciones en los archi(os
)eb.confi$ o Machine.confi$.
Nota: es recomendable confi$urar la autenticaci%n en funci%n de cada ser(icio
)eb en el archi(o )eb.confi$ del ser(icio )eb correspondiente.
<authentication mode="Windows" />
<identity impersonate="true" />
Con esta confi$uraci%n, el c%di$o del ser(icio )eb suplanta al llamador autenticado
por **S. "ara suplantar al llamador ori$inal es preciso desacti(ar el acceso an%nimo
en **S. &n caso de utili6ar el acceso an%nimo, el c%di$o del ser(icio )eb suplanta la
cuenta de usuario de *nternet an%nimo 3.ue, de manera predeterminada, es
*7S8NMACL*+&4.
Seguridad configurable
&l empleo de la autenticaci%n de )indo>s -unto con la funcionalidad de suplantaci%n
ofrece las si$uientes opciones de autori6aci%n:
; .istas )C. de Windo-s
; )rc/ivo del servicio Web (0asm"). 2a autori6aci%n de archi(os lle(a a
cabo comprobaciones de acceso para los recursos AS".+&, solicitados
3.ue incluye el archi(o del ser(icio )eb .asmx4 mediante el contexto de
se$uridad del llamador ori$inal. &s preciso .ue el llamador ori$inal reciba,
como m'nimo, acceso de lectura al archi(o .asmx.
; Recursos a los *ue obtiene acceso el servicio Web. 2as listas AC2 de
)indo>s de los recursos a los .ue obtiene acceso el ser(icio )eb
3archi(os, carpetas, cla(es de re$istro, ob-etos de ser(icio del directorio
Acti(e Directory@, etc.4 deben incluir una entrada de control de acceso
3AC&4 .ue conceda acceso de lectura al llamador ori$inal 3puesto .ue el
subproceso del ser(icio )eb utili6ado para el acceso a los recursos
e-ecuta la suplantaci%n del llamador4.
; )utori,aci(n mediante direcciones 1R.0 Se confi$ura en el archi(o
Machine.confi$ o )eb.confi$. Con la autenticaci%n de )indo>s, los nombres
de usuario adoptan la forma Domain+ameO7ser+ame
3+ombreDominioO+ombre7suario4 y las funciones se asi$nan una a una a los
$rupos de )indo>s.
<authorization>
<deny user="DomainName\UserName" />
<allow roles="DomainName\WindowsGroup" />
</authorization>

Seguridad mediante programaci(n
2a se$uridad mediante pro$ramaci%n hace referencia a las comprobaciones de
se$uridad ubicadas en el c%di$o del ser(icio )eb. 2as si$uientes opciones de
se$uridad mediante pro$ramaci%n est#n disponibles cuando se utili6an la
autenticaci%n de )indo>s y la suplantaci%n.
; eticiones de permisos rincipal
; *mperati(as 3en las l'neas del c%di$o de un m9todo4
PrincipalPermission permCheck = new PrincipalPermission(
null, @"DomainName\WindowsGroup");
permCheck.Demand();
; Declarati(as 3estos atributos pueden fi$urar antes de los m9todos o las
clases )eb4
// Demand that the caller is a member of a specific role (for Windows
// authentication this is the same as a Windows group)
[PrincipalPermission(SecurityAction.Demand,
Role=@"DomainName\WindowsGroup)]
// Demand that the caller is a specific user
[PrincipalPermission(SecurityAction.Demand,
Name=@"DomainName\UserName")]
; Comprobaciones de funciones e"pl$citas. "uede reali6ar la comprobaci%n
de funciones mediante la interfa6 Irincipal.
IPrincipal.IsInRole(@"DomainName\WindowsGroup");

Escenarios de uso
7tilice la autenticaci%n de )indo>s y la suplantaci%n cuando se den las si$uientes
condiciones:
; 2os clientes del ser(icio )eb pueden identificarse mediante cuentas de
)indo>s, .ue a su (e6 puede autenticar el ser(idor.
; Debe transferirse el contexto de se$uridad del llamador ori$inal al si$uiente
ni(el a tra(9s del ser(icio )eb. "or e-emplo, a un con-unto de componentes
re(isados .ue utili6an funciones de Ser(icios &mpresariales 3COMP4 o a un
ni(el de datos .ue precisa autori6aci%n de $ranularidad fina 3por usuario4.
; Debe transferir el contexto de se$uridad del llamador ori$inal a los ni(eles
indirectos a fin de admitir la auditor'a de ni(el del sistema operati(o.

Importante: el uso de la suplantaci%n reduce la escalabilidad por.ue incide en la
a$rupaci%n de conexiones de bases de datos. A modo de enfo.ue alternati(o, es
recomendable plantearse la posibilidad de utili6ar un modelo de subsistema de
confian6a en el .ue el ser(icio )eb autorice a los llamadores y, a continuaci%n,
utilice una identidad fi-a para obtener el acceso a la base de datos. 2a identidad del
llamador se transfiere desde la aplicaci%nQ por e-emplo, mediante los par#metros
de procedimiento almacenados.
M's informaci(n
; Si desea obtener m#s informaci%n acerca de la autenticaci%n de )indo>s y la
suplantaci%n, consulte el cap'tulo M GSe$uridad de AS".+&,G.
; "ara obtener m#s informaci%n acerca de la autori6aci%n mediante direcciones
782, consulte G+otas acerca de la autori6aci%n mediante direcciones 782G en
el cap'tulo M, GSe$uridad de AS".+&,G.

)utenticaci(n de Windo-s sin suplantaci(n
2os si$uientes elementos de confi$uraci%n muestran c%mo habilitar la autenticaci%n
de )indo>s 3**S4 sin suplantaci%n de forma declarati(a en el archi(o )eb.confi$.
<authentication mode="Windows" />
<!-- The following setting is equivalent to having no identity element -->
<identity impersonate="false" />
Seguridad configurable
&l empleo de la autenticaci%n de )indo>s sin la suplantaci%n ofrece las si$uientes
opciones de autori6aci%n:
; 2istas AC2 de )indo>s
; )rc/ivo del servicio Web (0asm"). 2a autori6aci%n de archi(os lle(a a
cabo comprobaciones de acceso para los recursos AS".+&, solicitados
3.ue incluye el archi(o del ser(icio )eb .asmx4 mediante el llamador
ori$inal. +o se re.uiere la suplantaci%n.
; Recursos a los *ue obtiene acceso la aplicaci(n. 2as listas AC2 de
)indo>s de los recursos a las .ue obtiene acceso la aplicaci%n 3archi(os,
carpetas, cla(es de re$istro, ob-etos de Acti(e Directory4 deben incluir una
entrada AC& .ue conceda acceso de lectura a la identidad del proceso de
AS".+&, 3la identidad predeterminada .ue utili6a el subproceso del
ser(icio )eb para obtener acceso a los recursos4.
; )utori,aci(n de 1R.
Se confi$ura en los archi(os Machine.confi$ y )eb.confi$. Con la
autenticaci%n de )indo>s, los nombres de usuario adoptan la forma
Domain+ameO7ser+ame 3+ombreDominioO+ombre7suario4 y las funciones se
asi$nan una a una a los $rupos de )indo>s.
<authorization>
<deny user="DomainName\UserName" />
<allow roles="DomainName\WindowsGroup" />
</authorization>

Seguridad mediante programaci(n
2a se$uridad mediante pro$ramaci%n hace referencia a las comprobaciones de
se$uridad ubicadas en el c%di$o del ser(icio )eb. 2as si$uientes opciones de
se$uridad mediante pro$ramaci%n est#n disponibles cuando se utili6a la
autenticaci%n de )indo>s sin suplantaci%n.
; eticiones de permisos rincipal
; *mperati(as
PrincipalPermission permCheck = new PrincipalPermission(
null, @"DomainName\WindowsGroup");
permCheck.Demand();
; Declarati(as
// Demand that the caller is a member of a specific role (for Windows
// authentication this is the same as a Windows group)
[PrincipalPermission(SecurityAction.Demand,
Role=@"DomainName\WindowsGroup)]
// Demand that the caller is a specific user
[PrincipalPermission(SecurityAction.Demand,
Name=@"DomainName\UserName")]
; Comprobaciones de funciones e"pl$citas. "uede reali6ar la comprobaci%n
de funciones mediante la interfa6 Irincipal.
IPrincipal.IsInRole(@"DomainName\WindowsGroup");

Escenarios de uso
7tilice la autenticaci%n de )indo>s sin suplantaci%n cuando se den las si$uientes
condiciones:
; 2os clientes del ser(icio )eb pueden identificarse mediante cuentas de
)indo>s, .ue a su (e6 puede autenticar el ser(idor.
; Desea utili6ar el modelo de subsistema de confian6a y autori6ar a los clientes
desde el ser(icio )eb para, a continuaci%n, utili6ar una identidad fi-a para
obtener acceso a los recursos indirectos 3bases de datos por e-emplo4 a fin de
admitir la a$rupaci%n de conexiones.

M's informaci(n
; Si desea obtener m#s informaci%n acerca de la autenticaci%n de )indo>s y la
suplantaci%n, consulte el cap'tulo M GSe$uridad de AS".+&,G.
; "ara obtener m#s informaci%n acerca de la autori6aci%n mediante direcciones
782, consulte G+otas acerca de la autori6aci%n mediante direcciones 782G en
el cap'tulo M, GSe$uridad de AS".+&,G.

)utenticaci(n de Windo-s con identidad fi#a
&l elemento Ridentit+S del archi(o )eb.confi$ es compatible con los atributos
opcionales de nombre de usuario y contraseAa, lo cual le permite confi$urar una
identidad fi-a espec'fica para .ue la suplante el ser(icio )eb. &ste enfo.ue se
muestra en el si$uiente fra$mento del archi(o de confi$uraci%n.
<identity impersonate="true" userName="DomainName\UserName"
password="ClearTextPassword" />
Escenarios de uso
+o se recomienda el uso de este enfo.ue en entornos se$uros por dos moti(os:
; 2os nombres de usuario y las contraseAas no deber'an almacenarse en
formato de texto sin cifrar en los archi(os de confi$uraci%n.
; &n )indo>s !!!, este enfo.ue obli$a a conceder a la cuenta de proceso
AS".+&, el pri(ile$io TActuar como parte del sistema operati(oU. De este modo
se reduce la se$uridad del ser(icio )eb y aumenta el ries$o de amena6a en
caso de .ue un intruso pusiera en peli$ro el proceso del ser(icio )eb
3AspnetN>p.exe4.
M's informaci(n
; Si desea obtener m#s informaci%n acerca de la autenticaci%n de )indo>s y la
suplantaci%n, consulte el cap'tulo M GSe$uridad de AS".+&,G.
; "ara obtener m#s informaci%n acerca de la autori6aci%n mediante direcciones
782, consulte G+otas acerca de la autori6aci%n mediante direcciones 782G en
el cap'tulo M, GSe$uridad de AS".+&,G.
Configurar la seguridad
&n esta secci%n encontrar# los pasos .ue debe reali6ar para confi$urar la se$uridad
de un ser(icio )eb AS".+&,. Dichos mecanismos se refle-an en la *lustraci%n ?!.I.
$%nsert &gure: C'0/ ( Con&guring ASP.NET Securit".gi*+
*lustraci%n ?!.I
Confgurar la seguridad de un servicio Web ASP.NE
Configurar los par'metros de IIS
"ara obtener informaci%n pormenori6ada acerca de c%mo confi$urar los par#metros
de se$uridad de **S, consulte el apartado GConfi$urar la se$uridadG del cap'tulo M,
GSe$uridad de AS".+&,GQ la informaci%n .ue encontrar# es (#lida tambi9n para los
ser(icios )eb AS".+&,.
Configurar los par'metros de )S0NE2
2os par#metros de confi$uraci%n de la aplicaci%n se almacenan en archi(os
)eb.confi$, ubicados en el directorio ra'6 (irtual del ser(icio )eb. &s preciso
confi$urar los si$uientes par#metros:
?. Configure la autenticaci(n. Debe establecerse para cada ser(icio )eb 3no
en el archi(o Machine.confi$4 del archi(o )eb.confi$ ubicado en el directorio
ra'6 (irtual del ser(icio )eb.
<authentication mode="Windows|None" />
Nota: los ser(icios )eb no son compatibles actualmente con la autenticaci%n
mediante Bormularios y la autenticaci%n de "assport. Si decide utili6ar la
autenticaci%n personali6ada o de mensa-es, estable6ca el modo en nin$una.
. Configure la suplantaci(n + la autori,aci(n. Si desea obtener informaci%n
detallada, consulte GConfi$urar la se$uridadG en el cap'tulo M, GSe$uridad de
AS".+&,.G
M's informaci(n
"ara obtener m#s informaci%n acerca de la autori6aci%n mediante direcciones 782,
consulte G+otas acerca de la autori6aci%n mediante direcciones 782G en el cap'tulo
M, GSe$uridad de AS".+&,G.
roteger recursos
Deber'a utili6ar las mismas t9cnicas .ue se describen en el cap'tulo M, GSe$uridad de
AS".+&,G, para prote$er los recursos )eb Adem#s, (alore la posibilidad de eliminar
los protocolos L,,"/0&, y L,,"/"OS, del archi(o Machine.confi$ de los
ser(idores de producci%n cuando utilice los ser(icios )eb.
%es/abilitar 3224!E2 + 32245S2
De forma predeterminada, los clientes se comunican con los ser(icios )eb AS".+&,
mediante tres protocolos: L,,"/0&,, L,,"/"OS, y SOA" a tra(9s de L,,".
Deshabilite la compatibilidad para los protocolos L,,"/0&, y L,,"/"OS, en el
ni(el de e.uipo de los e.uipos de producci%n en los .ue no sean necesarios. De esta
forma conse$uir# e(itar posibles problemas de se$uridad .ue podr'an permitir .ue
una p#$ina )eb mal intencionada obten$a acceso a un ser(icio )eb interno .ue se
e-ecute detr#s de un ser(idor de se$uridad.
Nota: deshabilitar estos protocolos implica .ue los clientes nue(os no podr#n
comprobar un ser(icio )eb 1M2 mediante el bot%n Invocar de la p#$ina de
prueba del ser(icio )eb. &n su lu$ar, deber# crear un pro$rama cliente de
comprobaci%n. "ara hacerlo, a$re$ue una referencia al ser(icio )eb mediante el
sistema de desarrollo Microsoft Visual Studio@ .+&,. Vui6#s desee mantener
habilitados estos protocolos en los e.uipos de desarrollo a fin de .ue los
desarrolladores sean capaces de utili6ar la p#$ina de comprobaci%n.
ara des/abilitar los protocolos 3224!E2 + 32245S2 en todo un
e*uipo
?. Modifi.ue el archi(o Machine.confi$.
. &limine los comentarios de las l'neas del elemento R-ebServicesS .ue
a$re$an compatibilidad para los protocolos L,,"/0&, y L,,"/"OS,. Cuando
haya acabado, el archi(o Machine.confi$ deber'a ofrecer el si$uiente aspecto.
<webServices>
<protocols>
<add name="HttpSoap"/>
<!-- <add name="HttpPost"/> -->
<!-- <add name="HttpGet"/> -->
<add name="Documentation"/>
</protocols>
</webServices>
H. 0uarde el archi(o Machine.confi$.

Nota: en al$unos casos especiales en los .ue clientes de ser(icios )eb se
comunican con un ser(icio )eb .ue utili6a el protocolo L,,"/0&, o L,,"/"OS,,
es posible a$re$ar la compatibilidad necesaria para dichos protocolos desde el
archi(o )eb.confi$ de la aplicaci%n, con s%lo crear un elemento R-ebServicesS y
a$re$ar compatibilidad para los protocolos con los elementos RprotocolS y RaddS,
tal como se ha mostrado anteriormente.
M's informaci(n
Si desea obtener informaci%n detallada acerca de c%mo prote$er recursos, consulte
G"rote$er recursosG en el cap'tulo M, GSe$uridad de AS".+&,G.
Comunicaci(n segura
7tilice una combinaci%n de SS2 e *"Sec para prote$er los ('nculos de comunicaci%n.
M's informaci(n
; "ara obtener informaci%n acerca de c%mo llamar a un ser(icio )eb mediante
SS2, consulte GC%mo llamar a un ser(icio )eb con SS2G en la secci%n de
referencia de este manual.
; "ara obtener informaci%n acerca de c%mo utili6ar *"Sec entre dos e.uipos,
consulte GC%mo utili6ar *"Sec para $aranti6ar una comunicaci%n se$ura entre
dos ser(idoresG en la secci%n de referencia de este manual.
2ransmitir credenciales para la autenticaci(n de
servicios Web
2as llamadas a los ser(icios )eb se efect<an mediante un proxy de ser(icio )eb, un
ob-eto local .ue expone el mismo con-unto de m9todos .ue el ser(icio )eb de
destino.
"uede $enerar un proxy de ser(icio )eb mediante la utilidad de la l'nea de
comandos )sdl.exe. Si utili6a Visual Studio .+&, tambi9n puede $enerar el proxy
a$re$ando una referencia )eb al proyecto.
Nota: si el ser(icio )eb para el .ue desea $enerar un proxy est# confi$urado para
re.uerir certificados de cliente, deber# deshabilitar temporalmente dicho re.uisito
mientras a$re$a la referenciaQ de lo contrario se producir# un error. 7na (e6
a$re$ada la referencia, no ol(ide (ol(er a confi$urar el ser(icio para .ue exi-a los
certificados.
7n enfo.ue alternati(o consiste en mantener fuera de l'nea un archi(o )SD2
32en$ua-e de descripci%n de ser(icios )eb4 de los ser(icios )eb para .ue est9
disponible para las aplicaciones de consumidor. &s importante .ue recuerde
actuali6arlo si se modifica la interfa6 del Ser(icio )eb.
Especificar las credenciales de cliente para la
autenticaci(n de Windo-s
&l uso de la autenticaci%n de )indo>s re.uiere especificar las credenciales .ue
deben utili6arse para la autenticaci%n mediante la propiedad Credentials del proxy
de ser(icio )eb. Si no establece esta propiedad de forma expresa, se efectuar# la
llamada al ser(icio )eb sin utili6ar credenciales. Cuando se re.uiere la autenticaci%n
de )indo>s, se $enerar# un estado L,," I!?, de respuesta de acceso dene$ado.
1tili,ar %efaultCredentials
2as credenciales de cliente no se transfieren de forma impl'cita. &s el consumidor del
ser(icio )eb .uien debe establecer las credenciales y los detalles de la
autenticaci%n en el proxy. "ara transferir el contexto de se$uridad del contexto de
se$uridad )indo>s del cliente 3sea desde un testi$o de subproceso suplantado sea
desde un testi$o de proceso4 a un ser(icio )eb, estable6ca la propiedad Credentials
del proxy de ser(icio )eb en CredentialCac/e.%efaultCredentials tal como se
muestra a continuaci%n.
proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
,en$a en cuenta los si$uientes aspectos antes de utili6ar este enfo.ue:
; &ste m9todo transfiere las credenciales del cliente <nicamente cuando se
utili6a la autenticaci%n +,2M, =erberos o ne$ociada.
; Si una aplicaci%n de cliente 3por e-emplo, una aplicaci%n de formularios de
)indo>s4 llama al ser(icio )eb, las credenciales se obtendr#n de la sesi%n de
inicio de sesi%n interacti(a del usuario.
; 2as aplicaciones de ser(idor, como las aplicaciones )eb de AS".+&,, utili6an
la identidad de proceso, sal(o .ue se haya confi$urado la suplantaci%n, en
cuyo caso se utili6a la identidad del llamador suplantado.

1tili,ar credenciales espec$ficas
"ara utili6ar un con-unto espec'fico de credenciales de autenticaci%n para llamar a un
ser(icio )eb, utilice el si$uiente c%di$o.
CredentialCache cache = new CredentialCache();
cache.Add( new Uri(proxy.Url), // Web service URL
"Negotiate", // Kerberos or NTLM
new NetworkCredential("username", "password", "domainname") );
proxy.Credentials = cache;
&n este e-emplo, el tipo de autenticaci%n ne$ociada solicitada puede ser la
autenticaci%n =erberos o +,2M.
Solicitar siempre un tipo de autenticaci(n espec$fica
&s recomendable solicitar siempre un tipo de autenticaci%n espec'fico, tal como se
muestra m#s arriba. &(ite el uso directo de la clase Net-or6Credential, como se
refle-a en el si$uiente fra$mento de c%di$o.
proxy.Credentials = new
NetworkCredential("username", "password", "domainname");
&ste m9todo deber'a e(itarse en el c%di$o de producci%n por.ue se pierde el control
del mecanismo de autenticaci%n .ue utili6a el ser(icio )eb y, como consecuencia, se
pierde tambi9n el control con relaci%n al uso de las credenciales.
"or e-emplo, es probable .ue se produ6ca un desaf'o de autenticaci%n =erberos o
+,2M desde el ser(idor pero, en su lu$ar, recibir# un desaf'o b#sico. &n este caso,
el nombre de usuario y la contraseAa proporcionados se en(iar#n al ser(idor en
formato de texto no cifrado.
Establecer la propiedad re)ut/enticate
2a propiedad re)ut/enticate del proxy puede establecerse como (erdadera o
falsa. &stabl96cala en (erdadera 3true4 para proporcionar las credenciales de
autenticaci%n espec'ficas para $enerar un encabe6ado L,," WWW4aut/enticate
para transferir con la solicitud )eb. &sta propiedad $uarda la dene$aci%n de acceso
del ser(idor )eb en la solicitud y lle(a a cabo la autenticaci%n en la si$uiente
solicitud de reintento.
Nota: la preautenticaci%n s%lo se aplica cuando el ser(icio )eb se autentica
correctamente la primera (e6. 2a preautenticaci%n no tiene repercusi%n al$una en
la primera solicitud )eb.
private void ConfigureProxy( WebClientProtocol proxy,
string domain, string username,
string password )
{
// To improve performance, force pre-authentication
proxy.PreAuthenticate = true;
// Set the credentials
CredentialCache cache = new CredentialCache();
cache.Add( new Uri(proxy.Url),
"Negotiate",
new NetworkCredential(username, password, domain) );
proxy.Credentials = cache;
proxy.ConnectionGroupName = username;
}
1tili,ar la propiedad Connection!roupName
,en$a en cuenta .ue el c%di$o anterior establece la propiedad
Connection!roupName del proxy de ser(icio )eb. &ste paso s%lo es necesario si
el contexto de se$uridad utili6ado para la conexi%n con el ser(icio )eb (ar'a de una
solicitud a la otra, tal como se describe a continuaci%n.
Si traba-a con una aplicaci%n )eb de AS".+&, .ue se conecta a un ser(icio )eb y
transfiere el contexto de se$uridad del llamador ori$inal 3mediante
%efaultCredentials o estableciendo las credenciales expl'citas, como en el caso
anterior4, deber'a establecer la propiedad Connection!roupName del proxy de
ser(icio )eb de la aplicaci%n )eb. Con ello se consi$ue e(itar .ue un cliente
autenticado nue(o (uel(a a utili6ar una conexi%n ,C" autenticada anti$ua para el
ser(icio )eb asociado con unas credenciales de autenticaci%n de cliente anteriores.
2a reutili6aci%n de conexiones puede tener lu$ar tras un resultado L,," =eepAli(es
y la persistencia de autenticaci%n .ue se habilita por moti(os de rendimiento en **S.
&stable6ca la propiedad Connection!roupName en un identificador 3como el
nombre de usuario del llamador4 .ue distin$a un llamador del si$uiente, tal como se
muestra en el fra$mento de c%di$o anterior.
Nota: si el contexto de se$uridad del llamador ori$inal no se transfiere a tra(9s de
la aplicaci%n )eb hasta el ser(icio )eb sino .ue la aplicaci%n )eb se conecta al
ser(icio )eb mediante una identidad fi-a 3como la identidad de proceso AS".+&,
de la aplicaci%n )eb4, no ser# necesario .ue estable6ca la propiedad
Connection!roupName. &n este escenario, el contexto de se$uridad de conexi%n
permanece constante de un llamador al si$uiente.
.lamar a los servicios Web desde clientes *ue no sean
de Windo-s
&xisten una serie de enfo.ues de autenticaci%n .ue funcionan con los escenarios
.ue implican (arios exploradores. &ntre ellos fi$uran:
; )utenticaci(n mediante certificados. Mediante certificados 1.C!D para
(arias plataformas.
; )utenticaci(n b'sica. Si desea obtener un e-emplo de c%mo utili6ar la
autenticaci%n b#sica con un almac9n de datos personali6ado 3sin .ue sea
necesario Acti(e Directory4, consulte
http:55>>>.rassoc.com5$re$r5>eblo$5stories5!!5!J5J5>ebSer(icesSecurityLt
tpWasicAuthentication)ithoutActi(eDirectory.html 3en in$l9s4.
; Enfo*ues para mensa#es !7). 7tilice )eb Ser(ices De(elopment ,oolkit
para implementar soluciones 01A 3)S/Security4.
; Enfo*ues personali,ados. "or e-emplo, para transferir las credenciales
mediante encabe6ados SOA".
)utenticaci(n de servidor pro"+
2a autenticaci%n de ser(idor proxy no se admite en el cuadro de di#lo$o )gregar
referencia Web de Visual Studio .+&, 3aun.ue s' .ue ser# compatible en la
si$uiente (ersi%n de Visual Studio .+&,4. Como resultado puede producirse un
estado de L,," I!K: GAutenticaci%n proxy obli$atoriaG cuando intente a$re$ar una
referencia )eb.
Nota: .ui6#s no experimente este error si (isuali6a el archi(o .asmx desde un
explorador por.ue los exploradores en('an las credenciales autom#ticamente.
"ara solucionar este problema, utilice la utilidad de la l'nea de comandos )sdl.exe
3en (e6 del di#lo$o )gregar referencia Web4, como se muestra a continuaci%n.
wsdl.exe /proxy:http://<YourProxy> /pu:<YourName> /pp:<YourPassword>
/pd:<YourDomain> http://www.YouWebServer.com/YourWebService/YourService.asmx
7tilice el c%di$o presentado a continuaci%n si necesita establecer mediante
pro$ramaci%n la informaci%n de autenticaci%n del ser(idor proxy.
YourWebServiceProxy.Proxy.Credentials = CredentialsCache.DefaultCredentials;
2ransferir el llamador original
&n esta secci%n se describe c%mo transferir el contexto de se$uridad del llamador
ori$inal a tra(9s de una aplicaci%n )eb de AS".+&, hasta un ser(icio )eb ubicado
en un ser(idor de aplicaciones remoto. Vui6#s necesite recurrir a este procedimiento
para .ue un ser(icio )eb sea compatible con la autori6aci%n por usuario, o bien
pr%ximos subsistemas indirectos 3como bases de datos en las .ue se desee
autori6ar a los llamadores ori$inales con relaci%n a ob-etos de base de datos
indi(iduales4.
2a ilustraci%n ?!.C refle-a el contexto de se$uridad del llamador ori$inal 3Alice4 y
c%mo se transfiere a tra(9s del ser(idor )eb de cliente .ue alo-a una aplicaci%n )eb
de AS".+&, hasta el ob-eto remoto, alo-ado por AS".+&, en un ser(idor de
aplicaciones remotas, y finalmente a tra(9s de un ser(idor de bases de datos de
ser(idor.
$%nsert &gure: C'10 ( 0lo1ing original caller 1it. Web Service.gi*+
*lustraci%n ?!.C
ransferir el conte!to de seguridad del llamador original
"ara transferir las credenciales a un ser(icio )eb, el cliente del ser(icio )eb 3la
aplicaci%n )eb de AS".+&, en este escenario en concreto4 debe confi$urar el proxy
de ser(icio )eb y establecer de forma expresa la propiedad Credentials del proxy,
como se describe en el apartado G,ransmitir credenciales para la autenticaci%n de
ser(icios )ebG .ue fi$ura anteriormente en este cap'tulo.
,iene a su disposici%n dos m9todos para transferir el contexto del llamador.
; 2ransferir las credenciales predeterminadas + utili,ar la autenticaci(n
&erberos (+ la delegaci(n). &ste enfo.ue re.uiere el uso de la suplantaci%n
en la aplicaci%n )eb de AS".+&, y la confi$uraci%n del proxy de ob-eto remoto
con el elemento %efaultCredentials obtenido del contexto de se$uridad del
llamador suplantado.
; 2ransferir las credenciales e"pl$citas + utili,ar la autenticaci(n b'sica o
mediante 8ormularios. &ste enfo.ue no re.uiere el uso de funciones de
suplantaci%n en la aplicaci%n )eb de AS".+&,. &n cambio, es preciso
confi$urar pro$ram#ticamente el proxy de ser(icio )eb con credenciales
expl'citas obtenidas bien de (ariables de ser(idor 3en el caso de la
autenticaci%n b#sica4 bien de campos de formularios L,M2 3en el caso de la
autenticaci%n mediante Bormularios4 disponibles para la aplicaci%n )eb. ,anto
para la autenticaci%n b#sica como mediante Bormularios, el nombre de usuario
y la contraseAa est#n disponibles en formato de texto sin cifrar.

Credenciales predeterminadas con delegaci(n &erberos
"ara utili6ar la dele$aci%n =erberos, todos los e.uipos 3ser(idores y clientes4 deben
e-ecutar )indo>s !!! o (ersiones posteriores. "or otra parte, las cuentas de cliente
.ue (ayan a dele$arse deber#n almacenarse en Acti(e Directory y no marcarse
nunca como UConfidencial y no se puede dele$arU.
2as tablas .ue fi$uran a continuaci%n muestran los pasos de confi$uraci%n .ue
deben lle(arse a cabo en el ser(idor )eb, as' como en el ser(idor de aplicaciones.
Configurar el servidor Web
Confi$urar **S
"aso M#s informaci%n
Deshabilitar el acceso
an%nimo para el directorio
ra'6 (irtual de la aplicaci%n
)eb
Labilitar la autenticaci%n
inte$rada de )indo>s para
el directorio ra'6 (irtual de
la aplicaci%n )eb
2a autenticaci%n =erberos se ne$ociar# teniendo en
cuenta .ue tanto los clientes como el ser(idor e-ecutan
)indo>s !!! o (ersiones posteriores.
Nota: si ya utili6a *nternet &xplorer J en )indo>s !!!, el
(alor predeterminado es la autenticaci%n +,2M en (e6 de
la autenticaci%n =erberos .ue se precisa en este contexto.
"ara habilitar la dele$aci%n =erberos, consulte el art'culo
VDDMHM, G7nable to +e$otiate =erberos Authentication
after up$radin$ to *nternet &xplorer JG 3en in$l9s4 en la
=no>led$e Wase de Microsoft.
Confi$urar AS".+&,
"aso M#s informaci%n
Confi$urar la aplicaci%n
)eb de AS".+&, para
utili6ar la autenticaci%n de
)indo>s
Modifi.ue el archi(o )eb.confi$ del directorio (irtual de la
aplicaci%n )eb.
&stable6ca el elemento Raut/enticationS como se indica
a continuaci%n:
<authentication mode="Windows" />
Confi$urar la aplicaci%n
)eb de AS".+&, para la
suplantaci%n
Modifi.ue el archi(o )eb.confi$ del directorio (irtual de la
aplicaci%n )eb.
&stable6ca el elemento Ridentit+S como se indica a
continuaci%n:
<identity impersonate="true" />
Confi$urar el proxy de ser(icio )eb
"aso M#s informaci%n
&stablecer la propiedad de
credenciales del proxy de
ser(icio )eb en
%efaultCredentials.
Consulte el apartado G7tili6ar DefaultCredentialsG .ue
fi$ura m#s arriba en este cap'tulo para obtener muestras
de c%di$o.
Configurar el servidor de aplicaciones remoto
Confi$urar **S
"aso M#s informaci%n
Deshabilitar el acceso
an%nimo para el directorio
ra'6 (irtual del ser(icio )eb
Labilitar la autenticaci%n
inte$rada de )indo>s para
el directorio ra'6 (irtual de
la aplicaci%n )eb
Confi$urar AS".+&, 3host del ser(icio )eb4
"aso M#s informaci%n
Confi$urar AS".+&, para Modifi.ue el archi(o )eb.confi$ del directorio (irtual del
utili6ar la autenticaci%n de
)indo>s
ser(icio )eb.
&stable6ca el elemento Raut/enticationS como se indica
a continuaci%n:
<authentication mode="Windows" />
Confi$urar AS".+&, para la
suplantaci%n
Modifi.ue el archi(o )eb.confi$ del directorio (irtual del
ser(icio )eb.
&stable6ca el elemento Ridentit+S como se indica a
continuaci%n:
<identity impersonate="true" />
Nota: este paso s%lo es necesario si se desea transferir el
contexto de se$uridad del llamador ori$inal al si$uiente
ni(el indirecto 3una base de datos por e-emplo4 a tra(9s
del ser(icio )eb. Si est# habilitada la suplantaci%n, el
acceso a los recursos 3tanto local como remoto4 utili6ar#
el contexto de se$uridad del llamador ori$inal suplantado.
Si sus necesidades se limitan a permitir comprobaciones
de autori6aci%n por usuario en el ser(icio )eb, no
necesitar# utili6ar la suplantaci%n.
M's informaci(n
"ara obtener m#s informaci%n acerca de c%mo confi$urar la dele$aci%n =erberos,
consulte GC%mo implementar la dele$aci%n =erberos para )indo>s !!!G en la
secci%n de referencia de este manual.
Credenciales e"pl$citas con autenticaci(n b'sica o
mediante 8ormularios
Como alternati(a a la dele$aci%n =erberos, puede utili6ar la autenticaci%n b#sica o
mediante Bormularios en la aplicaci%n )eb para capturar las credenciales del cliente
y utili6ar a continuaci%n la autenticaci%n b#sica 3o inte$rada de )indo>s4 para el
ser(icio )eb.
0racias a este enfo.ue, la aplicaci%n )eb tiene a su disposici%n las credenciales del
cliente en formato de texto sin cifrar. Xstas se pueden transferir al ser(icio )eb a
tra(9s del proxy de ser(icio )eb. "ara hacerlo, escriba el c%di$o pertinente en la
aplicaci%n )eb .ue le permita recuperar las credenciales del cliente y confi$urar el
proxy.
)utenticaci(n b'sica
0racias a la autenticaci%n b#sica, las credenciales del llamador ori$inal est#n
disponibles para la aplicaci%n )eb en formato de (ariables de ser(idor. &l si$uiente
fra$mento de c%di$o muestra c%mo recuperarlas y confi$urar el proxy de ser(icio
)eb.
// Retrieve client's credentials (available with Basic authentication)
string pwd = Request.ServerVariables["AUTH_PASSWORD"];
string uid = Request.ServerVariables["AUTH_USER"];
// Associate the credentials with the Web service proxy
// To improve performance, force preauthentication
proxy.PreAuthenticate = true;
// Set the credentials
CredentialCache cache = new CredentialCache();
cache.Add( new Uri(proxy.Url),
"Basic",
new NetworkCredential(uid, pwd, domain) );
proxy.Credentials = cache;
)utenticaci(n mediante 8ormularios
2a autenticaci%n mediante Bormularios permite .ue las credenciales del llamador
ori$inal est#n disponibles para la aplicaci%n )eb en formato de campos de
formulario 3en (e6 de en formato de (ariables de ser(idor4. &n estos casos, utilice el
si$uiente fra$mento de c%di$o.
// Retrieve client's credentials from the logon form
string pwd = txtPassword.Text;
string uid = txtUid.Text;
// Associate the credentials with the Web service proxy
// To improve performance, force preauthentication
proxy.PreAuthenticate = true;
// Set the credentials
CredentialCache cache = new CredentialCache();
cache.Add( new Uri(proxy.Url),
"Basic",
new NetworkCredential(uid, pwd, domain) );
proxy.Credentials = cache;
2as tablas .ue fi$uran a continuaci%n muestran los pasos de confi$uraci%n .ue
deben lle(arse a cabo en el ser(idor )eb, as' como en el ser(idor de aplicaciones.
Configurar el servidor Web
Confi$urar **S
"aso M#s informaci%n
"ara utili6ar la
autenticaci%n b#sica,
deshabilitar el acceso
an%nimo para el directorio
ra'6 (irtual de la aplicaci%n
)eb y seleccionar la
autenticaci%n b#sica
/ O bien /
"ara utili6ar la
autenticaci%n mediante
Bormularios, habilitar el
acceso an%nimo
,anto la autenticaci%n b#sica como la autenticaci%n
mediante Bormularios deber'an utili6arse -unto con SS2
para prote$er las credenciales en formato de texto sin
cifrar .ue se en('an a tra(9s de la red. Si utili6a la
autenticaci%n b#sica, deber'a utili6ar SS2 para todas las
p#$inas 3no s%lo para la p#$ina de inicio de sesi%n inicial4,
puesto .ue las credenciales b#sicas se transmiten con
todas y cada una de las solicitudes.
Del mismo modo, deber'a utili6ar SS2 para todas las
p#$inas si utili6a la autenticaci%n mediante Bormularios a
fin de prote$er las credenciales de texto sin cifrar durante
el inicio de sesi%n y de prote$er tambi9n el (ale de
autenticaci%n .ue se transfiere en solicitudes posteriores.
Confi$urar AS".+&,
"aso M#s informaci%n
Si se utili6a la autenticaci%n
b#sica, confi$urar la
Modifi.ue el archi(o )eb.confi$ del directorio (irtual de la
aplicaci%n )eb.
aplicaci%n )eb de
AS".+&, para utili6ar la
autenticaci%n de )indo>s
/ O bien /
Si se utili6a la autenticaci%n
mediante Bormularios,
confi$urar la aplicaci%n
)eb de AS".+&, para
utili6ar la autenticaci%n
mediante Bormularios
&stable6ca el elemento Raut/enticationS como se indica
a continuaci%n:
<authentication mode="Windows" />
/ O bien /
Modifi.ue el archi(o )eb.confi$ del directorio (irtual de la
aplicaci%n )eb.
&stable6ca el elemento Raut/enticationS como se indica
a continuaci%n:
<authentication mode="Forms" />
Deshabilitar la suplantaci%n
de la aplicaci%n )eb de
AS".+&,
Modifi.ue el archi(o )eb.confi$ del directorio (irtual de la
aplicaci%n )eb.
&stable6ca el elemento Ridentit+S como se indica a
continuaci%n:
<identity impersonate="false" />
Nota: este c%di$o e.ui(ale a suprimir el elemento
Ridentit+S.
+o se re.uiere la suplantaci%n, dado .ue las credenciales
del usuario se transferir#n de forma expresa al ser(icio
)eb a tra(9s del proxy.
Confi$urar el proxy de ser(icio )eb
"aso M#s informaci%n
&scribir c%di$o para
capturar y establecer
expl'citamente las
credenciales del proxy de
ser(icio )eb
Consulte los fra$mentos de c%di$o incluidos en las
secciones de autenticaci%n b#sica y mediante
Bormularios.
Configurar el servidor de aplicaciones
Confi$urar **S
"aso M#s informaci%n
Deshabilitar el acceso
an%nimo para el directorio
ra'6 (irtual de la aplicaci%n
Labilitar la autenticaci%n
b#sica
Nota: la autenticaci%n b#sica del ser(idor de aplicaciones
3ser(icio )eb4 permite .ue el ser(icio )eb transfiera el
contexto de se$uridad del llamador ori$inal a la base de
datos 3dado .ue el nombre de usuario y la contraseAa del
llamador est#n disponibles en formato de texto sin cifrar y
pueden utili6arse para responder a los desaf'os de
autenticaci%n de red desde el ser(idor de bases de datos4.
Si no necesita transferir el contexto de se$uridad del
llamador ori$inal m#s all# del ser(icio )eb, considere la
posibilidad de confi$urar **S en el ser(idor de aplicaciones
para .ue utilice la autenticaci%n inte$rada de )indo>s,
puesto .ue con ello se me-ora la se$uridad y las
credenciales no se transmiten a tra(9s de la red ni est#n
disponibles para el ser(icio )eb.
Confi$urar AS".+&, 3ser(icio )eb4
"aso M#s informaci%n
Confi$urar AS".+&, para
utili6ar la autenticaci%n de
)indo>s
Modifi.ue el archi(o )eb.confi$ del directorio (irtual del
ser(icio )eb.
&stable6ca el elemento Raut/enticationS como se indica
a continuaci%n:
<authentication mode="Windows" />
Confi$urar el ser(icio )eb
de AS".+&, para la
suplantaci%n
Modifi.ue el archi(o )eb.confi$ del directorio (irtual del
ser(icio )eb.
&stable6ca el elemento Ridentit+S como se indica a
continuaci%n:
<identity impersonate="true" />
Nota: este paso s%lo es necesario si se desea transferir el
contexto de se$uridad del llamador ori$inal al si$uiente
ni(el indirecto 3una base de datos por e-emplo4 a tra(9s
del ser(icio )eb. Si est# habilitada la suplantaci%n, el
acceso a los recursos 3tanto local como remoto4 utili6ar#
el contexto de se$uridad del llamador ori$inal suplantado.
Si sus necesidades se limitan a permitir comprobaciones
de autori6aci%n por usuario en el ser(icio )eb, no
necesitar# utili6ar la suplantaci%n.
Subsistema de confian,a
&l modelo del subsistema de confian6a constituye un enfo.ue alternati(o 3m#s
sencillo de implementar4 para la transmisi%n del contexto de se$uridad del llamador
ori$inal. &n este modelo existe un l'mite de confian6a entre el ser(icio )eb y la
aplicaci%n )eb. &l ser(icio )eb conf'a en la aplicaci%n )eb para .ue autenti.ue y
autorice correctamente a los llamadores, antes de .ue permitir .ue las solicitudes
lle$uen al ser(icio )eb. &n el ser(icio )eb no se lle(a a cabo autenticaci%n al$una
de los llamadores ori$inales. &l ser(icio )eb autentica la identidad fi-a de confian6a
utili6ada por la aplicaci%n )eb para la comunicaci%n con el ser(icio )eb. &n la
mayor'a de los casos, se trata de la identidad del proceso de traba-o de AS".+&,.
&l modelo de subsistema de confian6a se refle-a en la ilustraci%n ?!.J.
$%nsert &gure: C'10 ( Trusted subs"ste# 1it. Web service.gi*+
*lustraci%n ?!.J
El modelo de subsistema de confan"a
2ransmitir la identidad del llamador
Si utili6a el modelo de subsistema de confian6a, .ui6#s necesite transmitir la
identidad del llamador ori$inal 3el nombre, no el contexto de se$uridad4, por e-emplo,
por moti(os de auditor'a de la base de datos.
"uede transferir la identidad desde la aplicaci%n mediante un m9todo. "or otra parte,
puede utili6ar los par#metros de procedimientos almacenados y los par#metros de
consulta de confian6a 3como muestra el si$uiente e-emplo4 para recuperar datos
espec'ficos de usuario de la base de datos.
SELECT x,y,z FROM SomeTable WHERE UserName = "Alice"
asos de configuraci(n
2as tablas .ue fi$uran a continuaci%n muestran los pasos de confi$uraci%n .ue
deben lle(arse a cabo en el ser(idor )eb, as' como en el ser(idor de aplicaciones.
Configurar el servidor Web
Confi$urar **S
"aso M#s informaci%n
Confi$urar la autenticaci%n
de **S
2a aplicaci%n )eb puede utili6ar cual.uier forma de
autenticaci%n para autenticar a los llamadores ori$inales.
Confi$urar AS".+&,
"aso M#s informaci%n
Confi$urar la autenticaci%n
y comprobar .ue la
suplantaci%n est9
deshabilitada
Modifi.ue el archi(o )eb.confi$ del directorio (irtual de la
aplicaci%n )eb.
&stable6ca el elemento Raut/enticationS en T)indo>sU,
TBormsU o T"assportU.
<authentication mode="Windows|Forms|Passport" />
&stable6ca el elemento Ridentit+S como se indica a
continuaci%n:
<identity impersonate="false" />
3O W*&+, elimine el elemento Ridentit+S4.
8establecer la contraseAa Si desea obtener m#s informaci%n acerca de c%mo
de la cuenta de AS"+&,
utili6ada para e-ecutar
AS".+&, O W*&+ crear una
cuenta de dominio con
pri(ile$ios m'nimos para
e-ecutar AS".+&, y
especificar informaci%n
detallada de la cuenta en el
elemento RprocessModelS
del archi(o )eb.confi$
obtener acceso a los recursos de red 3incluidos los
ser(icios )eb4 desde AS".+&, y acerca de c%mo
seleccionar y confi$urar una cuenta de proceso para
AS".+&,, consulte las secciones GObtener acceso a
recursos de redG e G*dentidad del proceso para AS".+&,G
en el cap'tulo M, GSe$uridad de AS".+&,G.
Confi$urar el proxy de ser(icio )eb
"aso M#s informaci%n
Confi$urar el proxy de
ser(icio )eb para utili6ar
las credenciales
predeterminadas para
todas las llamadas al
ser(icio )eb
7tilice la si$uiente l'nea de c%di$o:
proxy.Credentials = DefaultCredentials;
Configurar el servidor de aplicaciones
Confi$urar **S
"aso M#s informaci%n
Deshabilitar el acceso
an%nimo para el directorio
ra'6 (irtual del ser(icio )eb
Labilitar la autenticaci%n de
)indo>s inte$rada
Confi$urar AS".+&,
"aso M#s informaci%n
Confi$urar AS".+&, para
utili6ar la autenticaci%n de
)indo>s
Modifi.ue el archi(o )eb.confi$ del directorio (irtual del
ser(icio )eb.
&stable6ca el elemento Raut/enticationS como se indica
a continuaci%n:
<authentication mode="Windows" />
Deshabilitar la suplantaci%n Modifi.ue el archi(o )eb.confi$ del directorio (irtual de la
aplicaci%n.
&stable6ca el elemento Ridentit+S como se indica a
continuaci%n:
<identity impersonate="false" />
5btener acceso a recursos del sistema
"ara obtener informaci%n detallada sobre el acceso a los recursos del sistema 3por
e-emplo, al re$istro de sucesos y al re$istro4 de los ser(icios )eb de AS".+&,,
consulte el apartado GObtener acceso a recursos de sistemaG del cap'tulo M,
GSe$uridad de AS".+&,G. 2os enfo.ues y las restricciones abordados en el cap'tulo M
tambi9n son (#lidos para los ser(icios )eb de AS".+&,.
5btener acceso a recursos de red
Cuando obten$a acceso a recursos de red desde un ser(icio )eb, debe tener en
consideraci%n la identidad utili6ada para responder a los desaf'os de autenticaci%n
de la red desde el e.uipo remoto. &xisten tres opciones:
; 2a identidad de proceso 3determinada por la cuenta utili6ada para e-ecutar el
proceso de traba-o de AS".+&,4
; 7na identidad de ser(icio 3por e-emplo, una creada llamando a la interfa6
.ogon1ser4
; 2a identidad del llamador ori$inal 3con el ser(icio )eb confi$urado para la
suplantaci%n4

"ara obtener informaci%n detallada acerca de los beneficios .ue reporta cada uno de
estos enfo.ues, -unto con informaci%n pormenori6ada de confi$uraci%n, consulte el
apartado GObtener acceso a recursos de redG del cap'tulo M, GSe$uridad de
AS".+&,G.
5btener acceso a los ob#etos C5M
2a directi(a )spCompat 3utili6ada por las aplicaciones )eb cuando llaman a ob-etos
COM de subprocesamiento controlado4 no est# disponible para los ser(icios )eb.
&sto si$nifica .ue cuando se llama a ob-etos de modelo de subprocesamiento
controlado desde ser(icios )eb, se produce un intercambio de subproceso. &l
resultado es una li$era disminuci%n del rendimiento, y si el ser(icio )eb aplica la
suplantaci%n, el testi$o de suplantaci%n se perder# al llamar al componente COM.
Como consecuencia suele $enerarse una excepci%n de acceso dene$ado.
M's informaci(n
; "ara obtener m#s informaci%n acerca de las excepciones de acceso dene$ado
cuando se llama a ob-etos COM de subprocesamiento controlado, consulte el
art'culo VHCKD?,G"8W: Access Denied &rror Messa$e Occurs )hen
*mpersonatin$ in AS".+&, and Callin$ S,A COM ComponentsG 3en in$l9s4 en
la =no>led$e Wase de Microsoft.
; "ara obtener m#s informaci%n acerca de c%mo obtener acceso a los ob-etos
COM y utili6ar el atributo AspCompat, consulte el apartado GObtener acceso a
los ob-etos COMG del cap'tulo M, GSe$uridad de AS".+&,G.
; "ara obtener m#s informaci%n acerca de c%mo llamar a ob-etos COM de
subprocesamiento controlado desde los ser(icios )eb, consulte el art'culo
VH!HHKC, G*+BO: 1M2 )eb Ser(ices and Apartment Ob-ectsG 3en in$l9s4, de la
=no>led$e Wase de Microsoft.

1tili,ar certificados de cliente con los servicios
Web
&n esta secci%n se describen las t9cnicas para utili6ar los certificados de cliente
1.C!D para la autenticaci%n de ser(icios )eb.
"uede utili6ar la autenticaci%n mediante certificados de cliente desde un ser(icio
)eb para autenticar los si$uientes elementos:
; Otros ser(icios )eb
; Aplicaciones .ue se comunican directamente con el ser(icio )eb 3por e-emplo,
aplicaciones basadas en ser(idores o aplicaciones de escritorio de cliente4

)utenticar clientes de e"plorador Web mediante
certificados
7n ser(icio )eb no puede utili6ar certificados de cliente para autenticar a los
llamadores si 9stos interact<an con una aplicaci%n )eb intermedia, puesto .ue no es
posible reen(iar el certificado del llamador ori$inal al ser(icio )eb a tra(9s de la
aplicaci%n )eb. Mientras .ue la aplicaci%n )eb puede autenticar a sus propios
clientes mediante certificados, dichos certificados no pueden utili6arse en el ser(icio
)eb para la autenticaci%n.
&l moti(o por el .ue da errores este escenario Tser(idor a ser(idorU es .ue la
aplicaci%n )eb no tiene acceso al certificado del cliente 3en especial a la cla(e
pri(ada4 de su almac9n de certificados. &ste problema se muestra en la ilustraci%n
?!.K.
$%nsert &gure: C'10 , Web service server,to,server certi&cate proble#.gi*+
*lustraci%n ?!.K
Autenticaci#n mediante certifcados de cliente del servicio Web
1tili,ar el modelo de subsistema de confian,a
2a soluci%n a esta restricci%n pasa por utili6ar un modelo de subsistema de confian6a
.ue, adem#s, reporta compatibilidad para la autenticaci%n mediante certificados en el
ser(icio )eb. Con este enfo.ue, el ser(icio )eb autentica la aplicaci%n )eb
mediante el certificado de la aplicaci%n )eb 3no con el certificado del llamador
ori$inal4. &l ser(icio )eb conf'a en la aplicaci%n )eb para autenticar a sus usuarios y
lle(ar a cabo la autori6aci%n necesaria .ue $arantice .ue s%lo los llamadores
autori6ados sean capaces de obtener acceso a los datos y las funciones expuestos
por el ser(icio )eb.
&ste enfo.ue .ueda refle-ado en la ilustraci%n ?!.M.
$%nsert &gure: C'10 , Web Service Certi&cate Aut.entication ( Trusted
Subs"ste#.gi*+
*lustraci%n ?!.M
El servicio Web autentica la aplicaci#n Web de confan"a
Si la l%$ica de autori6aci%n del ser(icio )eb re.uiere (arias funciones, la aplicaci%n
)eb podr# en(iar certificados distintos se$<n la funci%n a la .ue pertene6ca el
llamador. "or e-emplo, puede utili6arse un certificado para miembros de un $rupo
Administradores 3con permisos para actuali6ar los datos de una base de datos
ser(idor4 y otro certificado para el resto de los usuarios 3con autori6aci%n para
operaciones de lectura exclusi(amente4.
Nota: en escenarios como 9ste existe la posibilidad de utili6ar un ser(idor de
certificados local 3al .ue s%lo pueden obtener acceso los dos ser(idores4 para
administrar todos los certificados de aplicaci%n )eb.
&n este escenario:
; 2a aplicaci%n )eb autentica a sus usuarios mediante certificados de cliente.
; 2a aplicaci%n )eb act<a como e.uipo selector y autori6a a sus usuarios,
adem#s de controlar el acceso al ser(icio )eb.
; 2a aplicaci%n )eb llama al ser(icio )eb y transmite un certificado distinto .ue
representa a la aplicaci%n 3o, .ui6#s, un ran$o de certificados basados en la
pertenencia a funciones del llamador4.
; &l ser(icio )eb autentica la aplicaci%n )eb y conf'a en la aplicaci%n para
e-ecutar la autori6aci%n de cliente necesaria.
; Se utili6a *"Sec entre el ser(idor de aplicaciones )eb y el ser(idor de
ser(icios )eb a fin de proporcionar un control de acceso adicional. *"Sec e(ita
los intentos de acceso no autori6ado desde otros e.uipos. 2a autenticaci%n
mediante certificados del ser(idor de ser(icios )eb tambi9n e(ita el acceso no
autori6ado.

Implementaci(n de soluciones
"ara utili6ar la autenticaci%n de certificados en el ser(icio )eb de un escenario como
9ste, utilice un proceso independiente para llamar al ser(icio )eb y transmitir el
certificado. +o deben manipularse los certificados directamente desde la aplicaci%n
)eb de AS".+&, por.ue dicha aplicaci%n no dispone de nin$<n perfil de usuario
car$ado ni de almac9n de certificados asociado. &l proceso independiente debe
confi$urarse para .ue se e-ecute con una cuenta dotada de un perfil de usuario
asociado 3y almac9n de certificados4. &xisten dos opciones b#sicamente:
; 7tili6ar una aplicaci%n de ser(idor de Ser(icios &mpresariales
; 7tili6ar un ser(icio )indo>s

2a ilustraci%n ?!.D muestra este escenario con una aplicaci%n ser(idor de Ser(icios
&mpresariales.
$%nsert &gure: C'10 , Web Service Certi&cate Aut.entication.gi*+
*lustraci%n ?!.D
Autenticaci#n mediante certifcados con servicios Web
A continuaci%n se resume la secuencia de e(entos .ue recopila ilustraci%n ?!.D.
?. 2a aplicaci%n )eb autentica al llamador ori$inal mediante certificados de
cliente.
. 2a aplicaci%n )eb es el e.uipo selector y, por lo tanto, responsable de
autori6ar el acceso a determinadas #reas de funcionalidad 3incluidas a.u9llas
.ue suponen interacci%n con el ser(icio )eb4.
H. 2a aplicaci%n )eb llama a un componente re(isado mediante la e-ecuci%n de
una aplicaci%n de Ser(icios &mpresariales fuera de proceso.
I. 2a cuenta utili6ada para e-ecutar la aplicaci%n de Ser(icios &mpresariales
dispone de un perfil de usuario asociado. &l componente obtiene acceso al
certificado del cliente desde su almac9n de certificados, .ue lo utili6a el
ser(icio )eb para autenticar la aplicaci%n )eb.
C. &l componente re(isado llama al ser(icio )eb y transmite el certificado del
cliente en cada solicitud de m9todo. &l ser(icio )eb autentica la aplicaci%n
)eb mediante este certificado y conf'a en la aplicaci%n )eb para .ue autorice
correctamente a los llamadores ori$inales.
9or *u: utili,ar un proceso adicional;
2a necesidad de un proceso adicional 3en (e6 de utili6ar el proceso )eb
AspnetN>p.exe para ponerse en contacto con el ser(icio )eb4 se debe a .ue se
re.uiere un perfil de usuario 3.ue conten$a un almac9n de certificados4.
7na aplicaci%n )eb .ue se e-ecuta mediante la cuenta AS"+&, no tiene acceso a
nin$uno de los certificados del ser(idor )eb. &l moti(o radica en .ue los almacenes
de certificados se conser(an en los perfiles de usuario asociados a las cuentas de
usuario interacti(as. 2os perfiles de usuario se crean exclusi(amente para las
cuentas interacti(as cuando se inicia una sesi%n f'sica con dichas cuentas. &l
ob-eti(o de la cuenta AS"+&, no consiste en actuar como una cuenta de usuario
interacti(a y se confi$ura con el pri(ile$io GDene$ar inicio de sesi%n interacti(oG a fin
de me-orar la se$uridad.
Importante: no (uel(a a confi$urar la cuenta AS"+&, para eliminar este pri(ile$io
y con(ertirla en una cuenta de inicio de sesi%n interacti(o. 7tilice un proceso
independiente con una cuenta de ser(icio confi$urada para obtener acceso a los
certificados, como se ha descrito anteriormente en este cap'tulo.
M's informaci(n
; "ara obtener m#s informaci%n acerca de c%mo implementar este enfo.ue,
consulte GC%mo llamar a un ser(icio )eb mediante certificados de cliente de
AS"+&,G en la secci%n de referencia de este manual.
; "ara obtener m#s informaci%n acerca de la confi$uraci%n de *"Sec, consulte
GC%mo utili6ar *"Sec para $aranti6ar una comunicaci%n se$ura entre dos
ser(idoresG en la secci%n de referencia de este manual.

Comunicaci(n segura
2a comunicaci%n se$ura hace referencia a la protecci%n de la inte$ridad y la
confidencialidad de los mensa-es del ser(icio )eb conforme se transmiten de
aplicaci%n en aplicaci%n a tra(9s de la red. Se han desarrollado dos enfo.ues para
solucionar este problema: opciones para el transporte y opciones para los mensa-es.
5pciones para el transporte
2as opciones para el transporte incluyen:
; SS2
; *"Sec

&stas opciones resultan apropiadas cuando se cumplen las si$uientes condiciones:
; Se en('a un mensa-e directamente desde la aplicaci%n a un ser(icio )eb sin
.ue el mensa-e se enrute a tra(9s de nin$<n sistema intermedio.
; &s posible controlar la confi$uraci%n de los dos puntos finales implicados en la
transferencia del mensa-e.

5pciones para los mensa#es
2os enfo.ues relati(os a los mensa-es permiten prote$er la confidencialidad e
inte$ridad de los mensa-es cuando pasan por un n<mero arbitrario de sistemas
intermedios. &xiste la posibilidad de firmar los mensa-es para dotarlos de inte$ridad.
&n cuanto a la confidencialidad, puede ele$ir entre cifrar la totalidad del mensa-e o
<nicamente una parte del mismo.
7tilice un enfo.ue para mensa-es cuando se cumplan las si$uientes condiciones:
; Se en('a un mensa-e a un ser(icio )eb y es probable .ue el mensa-e se
reen('e a otros ser(icios )eb o .ue se enrute a tra(9s de sistemas
intermedios.
; +o se tiene control sobre la confi$uraci%n de los dos puntos finalesQ por
e-emplo, por.ue se en('an mensa-es de una empresa a otra.
M's informaci(n
; )eb Ser(ice De(elopment ,oolkit incluir# funciones para el cifrado de
mensa-es compatibles con la especificaci%n de se$uridad )S/Security.
; Si desea obtener m#s informaci%n acerca de SS2 e *"Sec, consulte el cap'tulo
I, GComunicaci%n se$uraG.

Resumen
&ste cap'tulo se centra en la se$uridad de los ser(icios )eb 3punto a punto4 relati(a
tanto a la plataforma como al transporte .ue pueden ofrecer los ser(icios
subyacentes de AS".+&,, **S y el sistema operati(o. Mientras .ue la se$uridad de la
plataforma permite soluciones se$uras para escenarios de intranet estrechamente
(inculados, no resulta con(eniente para escenarios hetero$9neos. &s por este
moti(o precisamente por el .ue se re.uiere la se$uridad .ue ofrece la especificaci%n
de se$uridad )S/Security de la ar.uitectura 01A. 7tilice )eb Ser(ices De(elopment
=it para crear soluciones de se$uridad de mensa-es para ser(icios )eb.
"ara entornos de dominios )indo>s estrechamente (inculados:
; Si desea transmitir la identidad del llamador ori$inal desde una aplicaci%n )eb
de AS".+&, a un ser(icio )eb remoto, la aplicaci%n )eb de AS".+&, deber'a
utili6ar la autenticaci%n =erberos 3con cuentas confi$uradas para la
dele$aci%n4, b#sica o mediante Bormularios.
; Si utili6a la autenticaci%n =erberos, habilite la suplantaci%n con la
aplicaci%n )eb y confi$ure la propiedad Credentials del proxy de ser(icio
)eb mediante %efaultCredentials.
; Si utili6a la autenticaci%n b#sica o mediante Bormularios, capture las
credenciales del llamador y estable6ca la propiedad Credentials del proxy
de ser(icio )eb a$re$ando un nue(o ob-eto CredentialCac/e.
"ara escenarios Tde ser(icio )eb a ser(icio )ebU:
; 7tilice la autenticaci%n b#sica o =erberos y estable6ca las credenciales en el
proxy de cliente.
; 7tilice una aplicaci%n de Ser(icios &mpresariales o un ser(icio de )indo>s
fuera de proceso para .ue manipule los certificados 1.C!D desde las
aplicaciones )eb.
; &n la medida de lo posible, utilice las comprobaciones de autori6aci%n de
sistema como, por e-emplo, la autori6aci%n mediante archi(os y direcciones
782.
; Si utili6a la autori6aci%n $ranular 3en el ni(el de m9todo )eb por e-emplo4,
utilice funciones .+&, 3tanto de forma declarati(a como imperati(a4.
; Autorice a los usuarios .ue no sean de )indo>s mediante funciones .+&,
3basadas en un ob-eto !enericrincipal .ue conten$a funciones4.
; Deshabilite los protocolos L,,"/0&, y L,,"/"OS, en todos los ser(idores
de producto.
; 7tilice la se$uridad de transporte si no le preocupa transferir los mensa-es de
forma se$ura a tra(9s de sistemas intermedios.
; 7tilice la se$uridad de transporte si el rendimiento de SS2 es adecuado.
; 7tilice la especificaci%n de se$uridad )S/Security y )eb Ser(ices
De(elopment kit para desarrollar soluciones para mensa-es.

También podría gustarte