Forefront Identity Manager 2010

Utilizando unico objeto de multiplos sources

Erro: sync-rule-flow-provisioning-failed

Após a criação dos MA´s e Definição dos Flow das informações deve ser configurado no “Metaverse Designer” como sendo a mesma informação de origem e destino.

Para Isso selecione o objeto que esta apresentando erro ao sincronizar.

Exemplo “Person”, Repare que existe a barra import a quantidade de origem para a mesma informação, no nosso caso iremos utilizar e attributo “mail” que existe na origem e no destino.

image

Selecione o attributo e click em “Configure Attribute flow precedence”.

image

Mark a opção “Use equal precedence” para todos os attributes que desejar fazer o sincronismo.

Até a Proxima.

Anúncios

Habilitando o provisionamento no MA FIM 2010 e Configurando o Exchange 2010

Ola Amigos

Tenho andado ausente devido a alguns projetos que tem me tomado bastante tempo, Hoje veremos como habilitar o provisionamento no exchange 2010.

Primeiro entre nas propriedades do Active Directory MA, Click em Configure Extentions e defina qual a versão do seu Exchange Server

Para Exchange 2007 será necessario a instalação da Console de Administração do Exchange 2007.

No caso do Exchange Server 2010 utilize o apontamento para o servidor com a função de CAS (Client Access Rule) http://FM001BR.lucasmarques.local/Powershell

clip_image002

No Servidor exchange deve ser habilitado o Powershell remoto usando o commandEnable-PSRemoting”

clip_image004

Problema de Sync nos objetos From FIM 2010 to External System

Após a criação das regras de synchronismo poderá ocorrer os seguintes erros caso você não tenha habilitado as devidas MPR´s.

“Identity Manager Policy prohibits the request from completing.”

“”failed-creation-via-web services”

“failed modification via web services”

Looking at the detailed error trace here’s the output:

There is an error executing a web service object creation request.
Type: Microsoft.ResourceManagement.WebServices.Client.PermissionDeniedException

Message: Fault Reason: Policy prohibits the request from completing.

Fault Details: <RequestFailures xmlns=”http://schemas.microsoft.com/2006/11/ResourceManagement” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=”http://www.w3.org/2001/XMLSchema”></RequestFailures>

Stack Trace:    at Microsoft.ResourceManagement.WebServices.ResourceFactoryClient.Create(Message request)
   at Microsoft.ResourceManagement.WebServices.ResourceFactoryClient.Create(Create createBody)
   at Microsoft.ResourceManagement.WebServices.Client.ResourceTemplate.CreateResource()

Inner Exception: Policy prohibits the request from completing.

image

image

Como verificar quais MPR´s devem ser habilitadas?

Executar o script PowerShell abaixo

Using PowerShell to check your MPR configuration for synchronization

  1. #————————————————————————————————————————-
  2. # Name   : Using PowerShell to check your MPR configuration for synchronization
  3. # Version: 2.0
  4. #————————————————————————————————————————-
  5.   Set-Variable -Name URI -Value “http://localhost:5725/resourcemanagementservice’ ” -Option Constant 
  6.   Set-Variable -Name msgWarning -Value “Caution: Your current MPR configuration requires your attention!” -Option Constant
  7.   Set-Variable -name msgOK -Value “Your current MPR configuration meets all requirements” -Option Constant
  8. #————————————————————————————————————————-
  9.  Function GetObjects 
  10.  {   
  11.     Param($Filter)   
  12.     End
  13.     {
  14.        $ExportObject = Export-Fimconfig -uri $URI `
  15.                              –onlyBaseResources `
  16.                              -customconfig ($Filter) `
  17.                              -ErrorVariable Err `
  18.                                                                                      -ErrorAction SilentlyContinue
  19.        If($Err){Throw $Err}
  20.        Return $ExportObject 
  21.      }
  22.  }
  23. #————————————————————————————————————————-
  24.  Function ShowResults
  25.  { 
  26.     Param([ref]$bActionItem, $lstAttributes, $msgMissing) 
  27.     End 
  28.     {
  29.        if([int]($lstAttributes.length) -eq 0) {return}
  30.        $bActionItem.value = $true   
  31.        Write-Host “`n$msgMissing” -foregroundcolor black -backgroundcolor yellow   
  32.        ForEach($attributeName In $lstAttributes) {Write-Host ” -$attributeName”} 
  33.     }
  34.  }
  35. #————————————————————————————————————————-
  36.  Function GetXmlDoc
  37.  { 
  38.     Param($exportObjects, $attributeName) 
  39.     End
  40.     {   
  41.        $curAttribute = $exportObjects.ResourceManagementObject.ResourceManagementAttributes | `
  42.                                Where-Object {$_.AttributeName -eq “$attributeName”}   
  43.        Return “<root>$($curAttribute.Value)</root>” 
  44.     }
  45.  }
  46. #————————————————————————————————————————-
  47.  Function GetDataFromMpr 
  48.  { 
  49.     Param($mprName, [ref]$lstMissingMpr, [ref]$lstDisabledMpr) 
  50.     End
  51.     {
  52.        $curMprObject = GetObjects -Filter “/ManagementPolicyRule[DisplayName=’$mprName’]”   
  53.        If($curMprObject -eq $null) {$lstMissingMpr.value += $mprName}   
  54.        Else
  55.        {    
  56.           $curAttribute = $curMprObject.ResourceManagementObject.ResourceManagementAttributes | `
  57.                           Where-Object {$_.AttributeName -eq “Disabled”}    
  58.           If($curAttribute.Value -eq “True”) {$lstDisabledMpr.value += $mprName}   
  59.        }  
  60.     }
  61.  }
  62. #————————————————————————————————————————-
  63.  Function GetResAttrsForMpr
  64.  { 
  65.     Param($mprName) 
  66.     End
  67.     {   
  68.        $curMprObject = GetObjects -Filter “/ManagementPolicyRule[DisplayName=’$mprName’]”   
  69.        If($curMprObject -eq $null) {Return @()}   
  70.        $curAttribute = $curMprObject.ResourceManagementObject.ResourceManagementAttributes | `
  71.                Where-Object {$_.AttributeName -eq “ActionParameter”}   
  72.        If($curAttribute -eq $null) {Return @()}   
  73.        return $curAttribute.Values 
  74.     }
  75.  }
  76. #————————————————————————————————————————-
  77.  Function GetEafAttributesForObjectType
  78.  {  
  79.     Param($cdObjectType, $mvObjectType, $xmlDoc)  
  80.     End  
  81.     {   
  82.        $lstAttribute = @()   
  83.        $typeNode = $xmlDoc.selectSingleNode(“//export-flow-set[@cd-object-type=’$cdObjectType’ and @mv-object-type=’$mvObjectType’]”)   
  84.        If($typeNode -eq $null) {Return $lstAttribute}   
  85.        ForEach($curNode in $typeNode.selectNodes(“export-flow[direct-mapping]”))   
  86.        {
  87.           $lstAttribute += $curNode.selectSingleNode(“@cd-attribute”).get_InnerText()   
  88.        }
  89.   
  90.        Return $lstAttribute  
  91.     } 
  92.  }
  93. #————————————————————————————————————————-
  94.  Function GetAttributeDiff
  95.  { 
  96.     Param([array]$lstSource, [array]$lstTarget) 
  97.     End
  98.     {   
  99.        $lstAttributes = @()   
  100.        ForEach($attrName in $lstSource)   
  101.        {  
  102.           If(!($lstTarget -contains $attrName)) {$lstAttributes += $attrName}   
  103.        }
  104.    
  105.        Return $lstAttributes  
  106.     }
  107.  }
  108. #————————————————————————————————————————-
  109.  If(@(Get-PSSnapin | Where-Object {$_.Name -eq “FIMAutomation”} ).count -eq 0) {Add-PSSnapin FIMAutomation}
  110. #————————————————————————————————————————-
  111.  $exportObjects = GetObjects -Filter “/ma-data[SyncConfig-category=’FIM’]”
  112.  If($exportObjects -eq $null) {Throw “There is no FIM MA configured on your system!”}
  113.  [xml]$xmlExportFlow = GetXmlDoc -exportObjects $exportObjects `
  114.                                  -attributeName “SyncConfig-export-attribute-flow”
  115.  [xml]$xmlProjection = GetXmlDoc -exportObjects $exportObjects `
  116.                                  -attributeName “SyncConfig-projection”
  117.  
  118.  [array]$lstEafAttributesPerson = GetEafAttributesForObjectType -cdObjectType “Person” `
  119.                                                                 -mvObjectType “person” `
  120.                                                                 -xmlDoc $xmlExportFlow
  121.                                                                
  122.  [array]$lstEafAttributesGroup = GetEafAttributesForObjectType -cdObjectType “Group” `
  123.                                                                -mvObjectType “group” `
  124.                                                                                                                                                                        -xmlDoc $xmlExportFlow
  125.  
  126.  If($lstEafAttributesGroup -contains “Member”)
  127.  { 
  128.     $lstEafAttributesGroup = @($lstEafAttributesGroup | Where-Object {$_ -ne ‘Member’}) 
  129.     $lstEafAttributesGroup += “ExplicitMember” }
  130.     If($xmlProjection.selectNodes(“//class-mapping[@cd-object-type=’Person’]”).get_count() -eq 0) {Throw “The FIM management agent does not manage person objects”}
  131.    
  132.     $bHasGroups = $xmlProjection.selectNodes(“//class-mapping[@cd-object-type=’Group’]”).get_count() -gt 0
  133. #————————————————————————————————————————-
  134.  $mprNames = @() 
  135.  $mprNames += “General: Users can read schema related resources”
  136.  $mprNames += “General: Users can read non-administrative configuration resources”
  137.  $mprNames += “User management: Users can read attributes of their own”
  138.  $mprNames += “Synchronization: Synchronization account can delete and update expected rule entry resources”
  139.  $mprNames += “Synchronization: Synchronization account can read schema related resources”
  140.  $mprNames += “Synchronization: Synchronization account can read synchronization related resources”
  141.  $mprNames += “Synchronization: Synchronization account can read users it synchronizes”
  142.  $mprNames += “Synchronization: Synchronization account controls detected rule entry resources”
  143.  $mprNames += “Synchronization: Synchronization account controls synchronization configuration resources”
  144.  $mprNames += “Synchronization: Synchronization account controls users it synchronizes”
  145.  
  146.  If($bHasGroups -eq $true)
  147.  {
  148.     $mprNames += “Synchronization: Synchronization account can read group resources it synchronizes” 
  149.     $mprNames += “Synchronization: Synchronization account controls group resources it synchronizes”
  150.  }
  151. #————————————————————————————————————————-
  152.  $bActionItem = $false
  153.  $lstDisabledMpr = @() 
  154.  $lstMissingMpr = @()
  155.  
  156.  ForEach($mprName In $mprNames)
  157.  { 
  158.     GetDataFromMpr -mprName $mprName `
  159.                            -lstMissingMpr ([ref]$lstMissingMpr) `
  160.                                                    -lstDisabledMpr ([ref]$lstDisabledMpr)
  161.  }
  162. #————————————————————————————————————————-
  163.  Clear-Host
  164.  Write-Host “`nFIM MPR Configuration For Synchronization Check”
  165.  Write-Host “===============================================”
  166.  ShowResults -bActionItem ([ref]$bActionItem) `
  167.              -lstAttributes $lstMissingMpr `
  168.              -msgMissing “Missing MPRs:”
  169.             
  170.  ShowResults -bActionItem ([ref]$bActionItem) `
  171.              -lstAttributes $lstDisabledMpr `
  172.              -msgMissing “MPRs that need to be enabled:”
  173.  
  174.  $mprName = “Synchronization: Synchronization account controls users it synchronizes”
  175.  
  176.  [array]$lstResAttributes = GetResAttrsForMpr -mprName $mprName
  177.  [array]$lstMissingAttrs = GetAttributeDiff -lstSource $lstEafAttributesPerson `
  178.                                             -lstTarget $lstResAttributes
  179.  ShowResults -bActionItem ([ref]$bActionItem) `
  180.              -lstAttributes $lstMissingAttrs `
  181.              -msgMissing “Missing attributes of $($mprName):”
  182.             
  183.  If($bHasGroups -eq $true)
  184.  { 
  185.     $mprName = “Synchronization: Synchronization account controls group resources it synchronizes” 
  186.     $lstResAttributes = GetResAttrsForMpr -mprName $mprName   
  187.     $lstMissingAttrs  = GetAttributeDiff -lstSource $lstEafAttributesGroup `
  188.                                          -lstTarget $lstResAttributes 
  189.     ShowResults -bActionItem ([ref]$bActionItem) `
  190.                 -lstAttributes $lstMissingAttrs `
  191.                 -msgMissing “Missing attributes of $($mprName):”
  192.  }
  193. #————————————————————————————————————————-
  194.  If($bActionItem -eq $true) {write-host “`n$msgWarning`n” -foregroundcolor white -backgroundcolor darkblue}
  195.  Else {write-host “`n$msgOK”}
  196. #————————————————————————————————————————-
  197.  Trap
  198.  { 
  199.     Write-Host “`nError: $($_.Exception.Message)`n” -foregroundcolor white -backgroundcolor darkred  
  200.     Write-Host $_.Exception.GetType().FullName -foregroundcolor white -backgroundcolor darkred 
  201.     Exit 1
  202.  }
  203. #————————————————————————————————————————-

Source Script:

 Using PowerShell to check your MPR configuration for synchronization

Executar o script que ira trazer quais as MPR´s deverão ser habilitadas conforme mostra abaixo.

“MPRs that need to be anabled”

image

Basta habilitar as MPRs que os sincronismos irá ocorrer sem problemas.

Deletando múltiplos objetos via powershell no FIM 2010

Ola amigos

Segue uma dica muito boa para deletar múltiplos objetos via powershell no FIM 2010

Caso se vc se deparar com a necessidade de deletar objetos de user, group, ExpectedRuleEntry e etc, agora vc poderá utilizar de um script e não perder um tempo precioso selecionando objetos, este script preserva o user administrator do seu FIM 2010.

Basta specificar que tipo de objeto vc deseja deletar do FIM, Ex: User, Groups, ExpectedRuleEntry e etc, no campo do script

clip_image001

Code:

  1. #———————————————————————————————————-
  2.  set-variable -name URI -value “http://localhost:5725/resourcemanagementservice&#8217; ” -option constant
  3. #———————————————————————————————————-
  4.  function DeleteObject
  5.  {
  6.     PARAM($objectType, $objectId)
  7.     END
  8.     {
  9.        $importObject = New-Object Microsoft.ResourceManagement.Automation.ObjectModel.ImportObject
  10.        $importObject.ObjectType = $objectType
  11.        $importObject.TargetObjectIdentifier = $objectId
  12.        $importObject.SourceObjectIdentifier = $objectId
  13.        $importObject.State = 2
  14.        $importObject | Import-FIMConfig -uri $URI
  15.      }
  16.  }
  17. #———————————————————————————————————-
  18.  if(@(get-pssnapin | where-object {$_.Name -eq “FIMAutomation”} ).count -eq 0) {add-pssnapin FIMAutomation}
  19.  $allobjects = export-fimconfig -uri $URI `
  20.                                 –onlyBaseResources `
  21.                                 -customconfig “/Person
  22.  $allobjects | Foreach-Object {
  23.     $displayName = $_.ResourceManagementObject.ResourceManagementAttributes | `
  24.                       Where-Object {$_.AttributeName -eq “DisplayName”}
  25.     if([string]::Compare($displayName.Value, “Administrator”, $True) -eq 0)
  26.     {write-host “Administrator NOT deleted”}
  27.     elseif([string]::Compare($displayName.Value, “Built-in Synchronization Account”, $True) -eq 0)
  28.     {write-host “Built-in Synchronization Account NOT deleted”}
  29.     else {
  30.       $objectId = (($_.ResourceManagementObject.ObjectIdentifier).split(“:”))[2]
  31.       DeleteObject -objectType “Person” `
  32.                    -objectId $objectId
  33.       write-host “`nObject deleted`n”  $displayName.Value }
  34.  }

Instalando Forefront Identity Manager 2010

Pré-requisitos para a instalação do FIM
Instalação do WSS 3.0
Instalação do SQL 2008

Após a Conclusão de Instalação dos pré-requisitos para a instalação do FIM Prosseguir Para a instalação do Forefront Identity Manager será necessário a Criação dos seguintes usuários,
Usuário FIM Synchronization Service (svc002br)
Este usuário deverá ser fornecido na configuração do “Configure Forefront Identity Manager Synchronization Service MSDN” .
O Usuário FIM Service (svc003br)
Este usuário deverá ser fornecido na configuração do “Configure Common Services” .
O Usuário FIM Management Agent Account (svc004br)
Este usuário sera responsavél pela conexão do MA ao serviço do FIM no “Synchronization Service Manager”.

clip_image002

Selecione a opçãp “Install Synchronization Service”.

clip_image004

Click em “Run”.

clip_image006

“Run” Novamente.

clip_image008

Click “Next”.

clip_image010

Selecione a opção “I accept the terms in the Licence Agreement” e Click “Next”.

clip_image012

Click “Next”.

clip_image014

Selecione o Servidor de SQL, Neste caso é Local Caso remoto é necessario adicionar a conta do Servidor FIM no Grupo Adiministrator do Servidor SQL.

clip_image016

Adicionar a Conta de SYNC, Conforme esta sendo solicitado e Click “Next”.

clip_image018

Click “Next”.

clip_image020

Manter Selecionado a Opção “Enabled Firewall Rules for Inbound RPC commnication” e “Next”.

clip_image022

Click “Install”.

clip_image024

Click “OK”.

clip_image026

Click “OK”.

clip_image028

Salvar o certificado Chave gerado pelo FIM.

clip_image030

Click “Finish”.

clip_image032

Click “Yes”.

clip_image034

Click “Start” e “Synchronization Service”.

clip_image036

Console “Synchronization Service”.

clip_image038

Click “Install Service an Portal” depois em “Run”.

clip_image040

Click em “Run”.

clip_image042

Click em “Next”.

clip_image044

Selecione a opção “I Accept the termes of this agreement” e “Next”.

clip_image046

Click “Next”.

clip_image048

Click “Next”.

clip_image050

Definir o Servidor SQL, e clicar em “Next”.

clip_image052

Definir o “o Servidor de Email” e clicar em “Next”.

clip_image054

Click “Next”.

clip_image056

Inserir as informações da Conta de Serviço do FIM e clicar em “Next”.

clip_image058

Click “Next”.

clip_image060

Definir o Servidor de FIM Sync e a conta a ser utilizada na Conexão do MA.

clip_image062

Novamente o servidor do FIM precisa ser definido.

clip_image064

Manter o padrão e clicar em “Next”.

clip_image066

Manter as seleções e click em “Next”.

clip_image068

Click em “Install”.

clip_image070

Click em “Finish”.

clip_image072

Abrir o portal do FIM para validar a Instalação.

clip_image074

Instalação do Microsoft SQL server 2008 com SP1

Ola a Todos
Um dos pré-requisitos para a instalação do FIM 2010 é o SQL 2008, segue abaixo um step by step da instalação.

Adicionando Servidor ao Domínio

clip_image002

Click em “Advanced system Settings”.

clip_image004

Adicionando Servidor no Dominio

clip_image006

Utilizar usuário domínio para adicionar o servidor ao Domínio.

clip_image008

Click “OK”

clip_image010

“Ok” Novamente

clip_image012

E em “Restart”

clip_image014

Intalando .NetFrameworks 3.5

clip_image016

Click em “Add Requred Role Services”

clip_image018

Click “Next”

clip_image020

Instalando Préequisitos de IIS, Click em “Add Requred Role Services”

clip_image022

Click “Next”

clip_image024

Selecione todas as opções e click “Next”

clip_image026

Click “Install”

clip_image028

Aguarde a Instalação concluir

clip_image030

Click “Close”

clip_image032

Instalando o SQL Server 2008 SP1

clip_image034

Click em “Run program”

clip_image036

Click em “Installation”

clip_image038

Click “OK”

clip_image040

Entre com o Product Key do seu Produto.

clip_image041

Seleciona “I Accept the license terms”

clip_image043

Click “Install”

clip_image045

Click em “Next”

clip_image047

Click em “Select all” e click “next”

clip_image049

Click “Next”

clip_image051

Click “Next”

clip_image053

Na opção “Start Type” mudar para Automatic.

clip_image055

Selecione a opção “Use the same account for all SQL server Services” e defina um usuário para os Serviços.

clip_image057

Selecione “Add Current User” como Administrator do SQL

clip_image059

Agora Selecione “Add Current User” como Administrator do Analisys Services.

clip_image061

Click next para iniciar a Instalação do SQL.

clip_image063

Click next

clip_image065

“Next” Novamente

clip_image067

Click “Install”

clip_image069

Ao Completar a Instalação Click “Next”

clip_image071

Click em “Close”

clip_image073

Fazer o download do SP1 SQL server, e executar para iniciar a instalação

clip_image075

Click “Next”

clip_image077

“Next” novamente.

clip_image078

Click “Next”

clip_image080

“Next” Novamente.

clip_image082

Agora click em “Update”.

clip_image084

Ao Completar a aplicação do SP1 click em “Next”.

clip_image086

Click em “Close”

clip_image088

Instalação do WSS 3.0

Ola a Todos
Um dos pré-requisitos para a instalação do FIM 2010 é o WSS 3.0, é muito Fácil a instalação segue abaixo um step by step how to da instalação.
Fazer o Download do WSS 3.0 SP2 no link abaixo
http://www.microsoft.com/downloads/details.aspx?FamilyId=EF93E453-75F1-45DF-8C6F-4565E8549C2A&displaylang=en

Iniciar a Instalação

clip_image002[4]

Selecione a opção “I Accept the termes of this agreement” e “Continue”.

clip_image004[4]

Click em “Advanced”.

clip_image006[4]

Manter a Padrão do diretorio de instalação.

clip_image008[4]

Selecione a Opção “Stand-Alone” e click em “Install Now”.

clip_image010[4]

Click em “Close”.

clip_image012[4]

Click “Next”.

clip_image014[4]

Click em “Yes”.

clip_image016[4]

Click “Finish”.

clip_image018[4]

Abrir o Internet Explorer e atenticar com o usuário administrator para fazer test.

clip_image020[4]

Instalação ok.

clip_image022[3]