2011-09-06 12 views
5

OAuth 2.0 delegazione è incluso all'interno della Azure AppFabric Servizio di controllo di accesso:OAuth 2.0 provider di identità in Windows Azure AppFabric servizio di controllo di accesso (ACS)

http://blogs.objectsharp.com/cs/blogs/steve/archive/2011/04/11/windows-azure-access-control-services-v2-rtw.aspx

Ma come si fa effettivamente istituito un 2.0 identità OAuth fornitore?

Nell'interfaccia di gestione quando si aggiunge un provider di identità e si seleziona il provider di identità WS-Federation, è necessario fornire un documento di metadati WS-Federation.

Tuttavia, quando si legge la documentazione dei fornitori di OAuth 2.0 (vale a dire http://msdn.microsoft.com/en-us/library/hh243647.aspx) non v'è alcuna menzione di un documento di metadati (Sì, lo so Windows Live è incluso come un provider di identità preconfigurato). È qualcosa che devo scrivere?


Aggiornamento

Ok, così ho scoperto che è possibile aggiungere provider di identità aggiuntive utilizzando l'API, vedere questi comandi PowerShell come esempio:

http://blogs.msdn.com/b/vbertocci/archive/2011/05/19/adding-a-custom-openid-provider-to-acs-with-just-one-line-of-powershell-code.aspx

Tuttavia quando provo ad aggiungere un provider OAuth, ricevo solo un errore:

Add-IdentityProvider -Type "Manual" -Name "foo" -SignInAddress "http://term.ie/oauth/example/access_token.php" -Protocol OAuth -Namespace "abc" -ManagementKey "xxxxxx" 

Add-IdentityProvider : An error occurred while processing this request. 
At line:1 char:21 
+ Add-IdentityProvider <<<< -Type "Manual" -Name "foo" -SignInAddress "http://term.ie/oauth/example/access_token.php" -Protocol OAuth -Namespace "abc" -ManagementKey "xxxxxx" 
+ CategoryInfo   : CloseError: (:) [Add-IdentityProvider], ServiceManagementException 
+ FullyQualifiedErrorId : Microsoft.Samples.DPE.ACS.ServiceManagementTools.PowerShell.IdentityProviders.AddIdentityProviderCommand 

Un altro aggiornamento

L'API ACS Management fornisce un meccanismo per l'aggiunta di nuovi provider di identità (se si imposta OpenID come WebSSOProtocolType), tuttavia, non riesco a vedere come si passa la chiave/segreto che il server di test OAuth (http://term.ie/oauth/example/) che sto usando richiede.

http://msdn.microsoft.com/en-us/library/hh278947.aspx

risposta

4

In una conversazione e-mail che ho avuto con Dominick Baier (www.leastprivilege.com) disse:

ACS actually supports OpenId IdPs – not OAuth. OAuth is used for token requests (delegation tokens typically).

To add new OpenIds IdP you need to use the management API – Vittorio has a blog post with a sample somewhere. But not all OpenId providers are supported.

se ho capito e-mail di Dominick correttamente, non è possibile utilizzare OAuth in questa veste, devi usare OpenId. Sfortunatamente il tizio che ha scritto il primo articolo sul blog che hai menzionato non sa nulla di OpenID/OpenAuth - è un ragazzo WS-Fed. Lo dico perché l'ho scritto ... :)

2

Lo scenario di delega OAuth 2, sezione 4.1 nella bozza 13, non impone alcun tipo di provider di identità o di alcun provider di identità. Hai solo bisogno di fare una qualche forma di autenticazione nel tuo sito web e reindirizzare all'URL del tuo cliente con un codice di autenticazione.

vi consiglio di dare un'occhiata a campione delegazione di autenticazione 2 a:

https://connect.microsoft.com/site1168/Downloads

Si noterà che in questo campione l'autenticazione dell'utente viene implementato con un codice segnaposto (nome utente hard coded/parola d'ordine). Nello scenario del mondo reale è possibile utilizzare qualsiasi modello di autenticazione tra cui Federation con ACS, il che avrebbe senso dal momento che si sta già utilizzando ACS per implementare la propria delega.