Mostrando postagens com marcador Service Application. Mostrar todas as postagens
Mostrando postagens com marcador Service Application. Mostrar todas as postagens

segunda-feira, 16 de fevereiro de 2015

SharePoint 2013 - Workflow cancelado: HTTP 401 "There has been an error authenticating the request"


O fluxo de trabalho no SharePoint 2013 fica normalmente no estado cancelado com a mensagem de erro "There has been an error authenticating the request" se o usuário que iniciou o fluxo não possui um perfil no serviço de aplicação "User Profile Service Application".

Isso é "by design" devido a utilização do protocolo OAuth, utilizado na comunicação entre o Workflow Manager e o SharePoint, porque os tokens OAuth contém apenas o UPN (User Principal Name) por razões de segurança. 

O SharePoint utiliza essa informação (o UPN) para obter mais detalhes sobre o usuário no serviço "User Profile Service Application".

Resumindo: Os fluxos de trabalho do SharePoint 2013 requerem o serviço "User Profile Service Application" e das informações nele.



Mensagem de erro no interface:


RequestorId: <GUID>. Details: System.ApplicationException: HTTP 401 {“x-ms-diagnostics”:[“3001000;reason=\”There has been an error authenticating the request.\”;category=\”invalid_client\””],”SPRequestGuid”:[“<GUID>″],”request-id”:[“<GUID>″],”X-FRAME-OPTIONS”:[“SAMEORIGIN”],”SPRequestDuration”:[“61″],”SPIisLatency”:[“1″],”Server”:[“Microsoft-IIS\/8.0″],”WWW-Authenticate” [...]

Mensagens de error nos logs do SharePoint:



SPApplicationAuthenticationModule: Error authenticating request, Error details { Header: {0}, Body: {1} }. Available parameters: 3001000;reason="There has been an error authenticating the request.";category="invalid_client" {"error_description":"The server was unable to process the request due to an internal error.  For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework SDK documentation and inspect the server trace logs."} .               \
The server was unable to process the request due to an internal error.  For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework SDK documentation and inspect the server trace logs.   at Microsoft.IdentityModel.Protocols.WSTrust.WSTrustChannel.ReadResponse(Message response)     at Microsoft.IdentityModel.Protocols.WSTrust.WSTrustChannel.Issue(RequestSecurityToken rst, RequestSecurityTokenResponse& rstr)   
SharePoint 2013 e OAuth - Uma visão geral

 []

sexta-feira, 6 de fevereiro de 2015

SharePoint: User Profile Synchronization - Redifinir a base SyncDB



As vezes, o serviço da sincronização dos perfil de usuários não inicia corretamente, está parado com o estado "starting" ou simplesmente permanece no estado "stale". Por isso, a maioria das pessoas recria o serviço inteiro a fim de normalizar o sincronização.

O serviço utiliza o banco de dados SyncDB como um banco de dados de estágio que serve como uma área de preparação das informações dos perfis de usuários. O banco contém informações sobre os mapeamentos dos atributos bem como também a configuração da conexão da sincronização.

A recriação do serviço utilizando os bancos antigos não garante a resolução desses problemas, visto que a origem, na maioria das vezes é uma informação inconsistente no banco SyncDB.

Por exemplo o seguinte evento que ocorreu no mapeamento da propriedade "Picture" (direção import):

1.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Log Name:      Application
Source:        FIMSynchronizationService
Date:          03/02/2015 11:18:46
Event ID:      6309
Task Category: Server
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      abc.contoso.com
Description:
The server encountered an unexpected error while performing an operation for a management agent.

 "BAIL: MMS(14148): cdext.cpp(412): 0x80070057 (The parameter is incorrect.): Invalid element: MAConfig [...]
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


2.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Log Name:      Application
Source:        Forefront Identity Manager
Date:          03/02/2015 11:18:46
Event ID:      3
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      abc.contoso.com
Description:
Microsoft.ResourceManagement.ResourceManagementException: Exception from HRESULT: 0x80230516 ---> System.Runtime.InteropServices.COMException (0x80230516): Exception from HRESULT: 0x80230516
   at MIISRCW.IMMSManagementAgent.ModifyMAData(String pszMADataXML, String& ppszUpdatedXML) [...]
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Nesses caso podemos executar um "reset" do banco e recuperar a configuração padrão. Os seguintes passos mostram como você deve prosseguir:

Obs.: O usuário que executa esses passos deve ser administrador local e do SharePoint (Farm Administrator).

1. Anote as configuração da sincronização e dos mapeamentos das propriedades dos usuários.

2. Desabilite o timer job "My Site cleanup timer job" se for configurado.

3. Desabilite o serviço "User Profile Synchronization Service" por meio do seguinte comando:

Get-SPServiceInstance | ? {$_.typename -eq "User Profile Synchronization Service" | Stop-SPServiceInstance

4. Execute o reset no base de dados SncDB:

net stop sptimerv4
## Identifique o ID a partir do comando Get-SPDatabase
$syncdb=Get-SPDatabase <GUID>
$syncdb.Unprovision()
$syncdb.Status='Offline'
## Identifique o ID a partir do comando Get-SPServiceApplication
$upa=Get-SPServiceApplication <GUID>
$upa.ResetSynchronizationMachine()
$upa.ResetSynchronizationDatabase()
$syncdb.Provision()
net start sptimerv4

5. Inicie o serviço "User Profile Synchronization Service" por meio do seguinte comando:

Get-SPServiceInstance | ? {$_.typename -eq "User Profile Synchronization Service" | Start-SPServiceInstance

SharePoint - User Profile Synchronization parado no estado "Starting"

[]

quarta-feira, 29 de outubro de 2014

Usefull tools: Err.exe (Microsoft Exchange Server Error Code Look-up)

The tool "Microsoft Exchange Server Error Code Look-up" to the contrary to what the name suggests serves to decipher almost any error code.



Here as an example the utilization of the tool deciphering the classic COM error 0x80070005 (Access is denied):

c:\err.exe 0x80070005
# for hex 0x80070005 / decimal -2147024891 :
  COR_E_UNAUTHORIZEDACCESS              corerror.h
# MessageText:
# Access is denied.
  DIERR_OTHERAPPHASPRIO                        dinput.h
  DIERR_READONLY                                          dinput.h
  DIERR_HANDLEEXISTS                                 dinput.h
  DSERR_ACCESSDENIED                             dsound.h
  ecAccessDenied                                               ec.h
  ecPropSecurityViolation                                    ec.h
  MAPI_E_NO_ACCESS                                    mapicode.h
  STIERR_READONLY                                        stierr.h
  STIERR_NOTINITIALIZED                                 stierr.h
  E_ACCESSDENIED                                         winerror.h
# General access denied error
# 11 matches found for "0x80070005"

It returns codes from 172 sources such as SQL, AD, Exchange and so on.

Code sources

Description:



Use the Error Code Lookup tool to determine error values from decimal and hexadecimal error codes in Microsoft Windows® operating systems. The tool can look up one or more values at a time. All values on the command line will be looked up in Exchange’s internal tables and presented to you. If available, informational data associated with the value or values will also be shown.

Microsoft Exchange Server Error Code Look-up
Original Post

terça-feira, 20 de maio de 2014

Ferramentas úteis: Err.exe (Microsoft Exchange Server Error Code Look-up)

A ferramenta "Microsoft Exchange Server Error Code Look-up" em contrário do que o nome sugere serve para decifrar praticamente qualquer código de erro.



Aqui como exemplo a utilização da ferramenta para decifrar o código de erro clássico COM 0x80070005 (Access is denied):

c:\err.exe 0x80070005
# for hex 0x80070005 / decimal -2147024891 :
  COR_E_UNAUTHORIZEDACCESS              corerror.h
# MessageText:
# Access is denied.
  DIERR_OTHERAPPHASPRIO                        dinput.h
  DIERR_READONLY                                          dinput.h
  DIERR_HANDLEEXISTS                                 dinput.h
  DSERR_ACCESSDENIED                             dsound.h
  ecAccessDenied                                               ec.h
  ecPropSecurityViolation                                    ec.h
  MAPI_E_NO_ACCESS                                    mapicode.h
  STIERR_READONLY                                        stierr.h
  STIERR_NOTINITIALIZED                                 stierr.h
  E_ACCESSDENIED                                         winerror.h
# General access denied error
# 11 matches found for "0x80070005"

Microsoft Exchange Server Error Code Look-up

sexta-feira, 7 de fevereiro de 2014

SharePoint - Excel Service Application - Unable to process the request. Wait a few minutes and try performing this operation again.


Evento amigável não é? Esse evento ocorre se o servidor está sem recursos OU se SharePoint não consegue acessar os Performance Counters - e isso era o caso aqui.

Encontrei o evento abaixo visualizando os worker processes do IIS (Category does not exist' error when viewing IIS Worker Processes in IIS Manager)


E os seguintes nos logs do SharePoint:

Na aberturo dos arquivos:

w3wp.exe (0x0EA8) 0x1F00 Excel Services Application     Web Front End acco Critical There was an error in communicating with Excel Calculation Services http://SPServer:32843/08ac7f6752a042e88dbcc03b8e7cfe33/ExcelService*.asmx exception: The remote server returned an error: (403) Forbidden. [Session:  User: contoso\administrator].

E mais eventos relacionados aos Performance Counters (sem ID de correlação):

w3wp.exe (0x0EA8) 0x2B44 SharePoint Foundation ff69 Medium   PDH failure on counter \SPServer\ASP.NET\\Requests Current with error Unknown error (0x800007d0)  
OWSTIMER.EXE (0x03BC) 0x1F5C SharePoint Foundation ff69 Medium   PDH failure on counter \SPServer\Memory\\Available Mbytes with error Unknown error (0x800007d0)

Solução:

Opção 1: O usuário de serviço não tem permissão para acessar os counters http://support.microsoft.com/kb/2711527  

Opção 2: Counters corrompidos: execute o comando lodctr /R e em seguida IISReset
http://technet.microsoft.com/en-us/library/bb490926.aspx

[]



terça-feira, 28 de janeiro de 2014

SharePoint - PowerShell script para limpar o cache da configuração

Limpar o cache da configuração do SharePoint é um troubleshooting valido para inúmeros situações, porém é um processo chato e desgastante quando você precisar aplicar isto em mais o que um servidor (imagine um ambiente com 15 ou mais servidores:).

O script do PowerShell abaixo limpa o cache conforme o KB939308.


## cleaning configuration cache based on  MS kb939308
Add-PSSnapin -Name Microsoft.SharePoint.PowerShell –erroraction SilentlyContinue

Stop-Service SPTimerV4
$folders = Get-ChildItem C:\ProgramData\Microsoft\SharePoint\Config
foreach ($folder in $folders)
    {
    $items = Get-ChildItem $folder.FullName -Recurse
    foreach ($item in $items)
        {
            if ($item.Name.ToLower() -eq "cache.ini")
                {
                    $cachefolder = $folder.FullName
                }
               
        }
    }
$cachefolderitems = Get-ChildItem $cachefolder -Recurse
    foreach ($cachefolderitem in $cachefolderitems)
        {
            if ($cachefolderitem -like "*.xml")
                {
                   $cachefolderitem.Delete()
                }
       
        }
       
$a = Get-Content  $cachefolder\cache.ini
$a  = 1
Set-Content $a -Path $cachefolder\cache.ini
start-Service SPTimerV4
IISRESET

Abraços

quinta-feira, 23 de janeiro de 2014

SharePoint - User Profile Synchronization parado no estado "Starting"


User Profile Synchronization parado no estado "Starting" - Porque?



Componentes envolvidos na sincronização / provisionamento

O serviço está configurado para utilizar 15 tentativas no provisionamento. Temos passos como por exemplo: configuração dos certificados, serviços do windows, instalar schemas de banco de dados, entre outros. O serviço tentará configurar tudo de novo se ocorre qualquer problema durante o provisionamento. Isso explica a impressão de que o serviço está parado. O status voltará a "stopped" depois de uns 15 a 45 minutos.

O estado (esta aparente paralisação) continua às vezes, dependendo do problema no estado "starting" mesmo depois que o servidor for reiniciado e às vezes será necessário a recriar o serviço.

Seguem as causas comuns:

Permissões incorretas

Existem duas contas que nós precisamos verificar: a identidade do serviço (a conta da farm) e a conta responsável pela sincronização.



A conta do serviço deve ser administrador local durante o provisionamento, essa permissão pode ser retirada depois do provisionamento e ele deve ter a permissão "Log on locally".

Lembrando: A atualização do SharePoint e/ou a recuperação de um backup por meio do Central Administration vai parar e reiniciar o serviço e você deve inserir o usuário da farm do SharePoint novamente np grupo dos administradores locais.

A conta responsável pela sincronização deve ter a permissão "Replicating Directory Changes" no nível do domínio, ser membro do grupo "Pre-Windows 2000 Compatible Access" e, caso você queira replicar alterações do SharePoint para o AD, a permissão "Create Child Objects and Write" no nível dos OUs.

Ambiente de desenvolvimento

É muito comum que o serviço não inicie depois que você tenha reiniciado seu ambiente de desenvolvimento. O serviço requer o SQL e falhará se o SQL não estiver respondendo.

Solução: Configure o serviço "FIM Synchronization service" para utilizar o "delayed start" no services.msc.

O serviço requer um re-provisionamento depois da atualização do SharePoint

Este comportamento é esperado, visto que o PSConfig (o wizard do produto) atualiza a schema dos bancos de dados do SharePoint, porém não do Sync DB.

ULS logs: evento 9i1w: ILM Configuration: Error ‘ERR_CONFIG_DB’

Causa: Permissões insuficientes no banco de dados Sync DB do serviço - adicione a conta do SharePoint como DBO, schema default DBO e reinicie o serviço.


Como analisar possíveis problemas durante o provisionamento 




A melhor forma para analisar possíveis problemas é por meio da ferramenta ULS Viewer. Você poderá filtrar os logs pela categoria "User Profiles" para monitorar o provisionamento e analisar a causa raiz do problema.

Existem n causas a mais que poderão causar esse comportamento, porém espero ter ajudado um pouco na sua busca...

[]