Pregunta

Estoy ejecutando una aplicación web SELFED WebService (WCF).
El WebService ejecuta un método para leer las credenciales de la tienda segura.
El método falla con el mensaje:

No se encontraron credenciales para el usuario actual dentro del objetivo Aplicación 'APPID' ...


Ejecutar el SPCONTEXT.CURRENT.WEB.CURRENTUSER EN MI MÉTODO me da: SharePoint \ System. Esto parece extraño considerando el hecho de que la aplicación web de alojamiento se ejecuta en su propia identidad.

La tienda segura está configurada de acuerdo con aquí . Tomé diferentes enfoques para obtener credenciales, pero el último código es:

SecureStoreCredentialCollection credentials = null;
SPServiceContext context =
SPServiceContext.GetContext(SPServiceApplicationProxyGroup.Default, SPSiteSubscriptionIdentifier.Default);

SecureStoreServiceProxy ssp = new SecureStoreServiceProxy();
ISecureStore iss = ssp.GetSecureStore(context);
credentials = iss.GetCredentials(appId);

También intenté ejecutar esto utilizando el contexto del sitio de administración central o SPCONTEXT.CURRENT.SITE.

Los administradores y los miembros de la aplicación de la aplicación de Secure Store Application incluyen todas las cuentas de administrador de la granja y la identidad de la aplicación de la aplicación. Lo mismo se aplica también a los administradores y permisos de servicios de tienda seguros.

Mis preguntas son: ¿La aplicación se ejecuta la forma en que se ejecuta en la cuenta del sistema (SharePoint \ System) el motivo del error de acceso a la tienda segura? ¿Es normal tener una aplicación web que se encuentra en la cuenta de SISTEMA en la cuenta del sistema de forma predeterminada? ¿Hay posiblemente una parte faltante en la configuración de mi aplicación web?

Cualquier ayuda es muy apreciada.

¿Fue útil?

Solución

Esto se ha resuelto:

Si bien el mensaje de excepción de retorno ha sido completamente engañoso, encontré el problema con el tipo de credenciales (es decir, grupo / individuo) y como resultado, configurando el propietario de la credencial correcta.

Para encontrar la excepción que tuve que volver a los procedimientos almacenados SSS y ejecutar un límite de rastreo en el PROC_SSS_GETRETRENCIALS.

Al comparar la entrada PROC y los pasos en el interior, he encontrado que el problema es que está coincidiendo con IdentityClaimvalueHash, lo que se deriva del valor del propietario de la credencial (al configurar valores de credenciales). Sin embargo, no puede establecer este valor correctamente cuando el tipo se establece como grupo. Selección de individuos a medida que el tipo me permitió establecer este valor como administrador de la granja.

Por supuesto, para obtener este trabajo, se necesita establecer los administradores de la aplicación de destino también.

Uso del rastreo Perfiler también puede ayudar a identificar qué identidad se envía al servicio. Aunque SPCONTEXT mostraba la cuenta del sistema, en el fondo se ha enviado la identidad de la aplicación web (basada en mi comprensión Todas las cuentas de administración se asignan a la cuenta del sistema ).

este link me ayudó a resolver este problema:

Licenciado bajo: CC-BY-SA con atribución
scroll top