Domanda

Sto usando DCOM per fornire vari servizi applicativi su una rete Windows, usando Kerberos per gestire l'autenticazione. Il sistema normalmente funziona bene, ma sto riscontrando problemi nell'accedere al servizio da un dominio separato (attendibile). In particolare, il servizio non è in grado di richiamare l'applicazione client, ricevendo l'errore & Quot; Si è verificato un errore specifico del pacchetto di sicurezza & Quot ;. Inoltre, se ottimizzo il servizio per richiedere in modo specifico l'autenticazione Kerberos (anziché utilizzare SNEGO / negoziazione), il client non può nemmeno chiamare il server (ricevendo nuovamente & Quot; Si è verificato un errore specifico del pacchetto di sicurezza & Quot; ).

La cosa confusa è che le cose hanno funzionato per anni senza problemi. Tuttavia, alcune cose sono diverse qui, rispetto a ciò che abbiamo fatto prima. Per uno, i server coinvolti eseguono Windows 2008, che non ho usato in precedenza. Inoltre, come notato sopra, gli errori si verificano solo quando si accede al servizio da un account da un dominio separato e l'utilizzo precedente non ha mai tentato di farlo.

Ora alla domanda: non sto usando un SPN (nome dell'entità servizio) per questo servizio DCOM, ma alcuni degli errori e dei registri eventi mi fanno pensare che potrebbe essere il problema. Tuttavia, tutti i documenti che ho trovato non sono chiari sul fatto che questo sia corretto o su come impostare SPN se ne ho bisogno. Qualcuno sa con certezza se un SPN è quello che mi manca qui? In tal caso, puoi indicarmi come dovrebbe essere fatto?

Dettagli aggiuntivi:

Per lo scenario in cui il server è impostato per forzare l'autenticazione Kerberos, attivando Debug RPC esteso fornisce ulteriori indizi. Il client può connettersi correttamente utilizzando CoCreateInstanceEx, ma le chiamate sull'interfaccia del servizio falliscono come indicato sopra. I record di errore RPC mostrano un errore nella posizione 140 e il codice di errore è 0x80090303 (& Quot; La destinazione specificata è sconosciuta o non raggiungibile & Quot;) e il terzo parametro per quel record è una stringa vuota. Questo indica un SPN mancante come colpevole.

È stato utile?

Soluzione 2

Modifica : sembra che potrei sbagliarmi al riguardo. Almeno un sito Web che ho trovato afferma che DCOM gestisce automaticamente gli SPN per te (vedere la parte inferiore della pagina) e ho confermato che i client possono connettersi correttamente se richiedono l'autenticazione Kerberos e usano " host / [nomecomputer] " come SPN.


Sembra che sia richiesto un SPN per il servizio, se si richiede esplicitamente l'autenticazione Kerberos quando si chiama CoInitializeSecurity nel processo del server DCOM. Per me, la chiamata sembrava così:

Avviso: non copiare direttamente questo codice senza assicurarsi che i valori siano adeguati alle tue esigenze di sicurezza.

SOLE_AUTHENTICATION_SERVICE sas;
sas.dwAuthnSvc = RPC_C_AUTHN_GSS_KERBEROS;
sas.dwAuthzSvc = RPC_C_AUTHZ_NONE;
sas.pPrincipalName = L"myservice/mymachine";
sas.hr = S_OK;
CoInitializeSecurity( 0, 1, &sas, 0, RPC_C_AUTHN_LEVEL_DEFAULT,
    RPC_C_IMP_LEVEL_DEFAULT, 0, EOAC_NONE, 0 );

L'SPN può essere configurato utilizzando setspn , come dimostrato di seguito:

setspn -A myservice/mymachine serviceusername

(vedi i documenti setspn per i dettagli).

Sfortunatamente questo non ha ancora risolto il mio problema, ma penso che il problema residuo sia legato a qualche problema specifico con le macchine di prova.

Altri suggerimenti

Per quello che vale, Kerberos per definizione richiede SPN. Potresti essere in grado di utilizzare l'SPNS incorporato (host /) e le varie varianti che l'host implica (Questa traduzione alias è archiviata in AD, ma per la vita di me, non riesco a trovare l'elenco di articoli in cui questo è trovato).

Comincerei guardando l'autenticazione tra domini - Può essere complicato con Kerberos. Innanzitutto accenderei kerberos logging sia sul client che sul server e vedrei se scopre qualsiasi cosa.

Ho riscontrato questo errore durante il tentativo di creare un'istanza dell'oggetto COM remoto. Potremmo riscontrare questo errore Se & Quot; Delegate & Quot; il livello di rappresentazione viene utilizzato dal client durante la chiamata a CoInitializeSecurity () e il servizio COM + è in esecuzione con un account utente che non ha " delega " autorizzazione a livello di dominio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top