2009-05-09 10 views
8

Dalla maggior parte delle letture che ho fatto su OpenID, sembra che possa essere richiesto un browser. Sto scrivendo un'app WCF e volevo utilizzare OpenID come metodo di autenticazione, ma la mia app non è un'app web. È possibile utilizzare insieme WCF e OpenID senza richiedere un browser web?Utilizzo di OpenID con WCF e nessun browser, è possibile?

+0

Ci scusiamo per questo commento molto tardivo. Ma con "nessun browser" intendi visualizzare la tua finestra di accesso e consentire agli utenti di inserirli, ad esempio, nome utente e password di Google? Se fossi un utente, non darei MAI il mio utente/password in questo modo. –

risposta

10

Mentre OpenID può tout nella sua indipendenza spec dai cookie e tale perché le specifiche in realtà non impone il modo in cui vengono utilizzate queste cose, in realtà non ho mai visto una buona soluzione OpenID per nulla oltre all'accesso a un sito Web, che è davvero il suo principale caso d'uso.

Tuttavia, c'è un buon modo per andare e utilizzare ancora WCF e OpenID. Aggiungi OAuth al mix. La libreria DotNetOpenAuth ha un esempio che mostra come un client WCF può essere autorizzato a chiamare un servizio WCF tramite OAuth, dove sul lato del servizio l'utente utilizza OpenID per accedere come parte del processo di autorizzazione.

Quindi, in pratica, se si WCF applicazione ha bisogno di "login" al fine di chiamare il servizio WCF, come parte di una messa a punto di una volta:

  1. L'applicazione si apre un browser in cui l'utente vede il Sito web del servizio WCF (il fornitore di servizi OAuth)
  2. L'utente accede con il relativo OpenID (anche se l'utente potrebbe già aver effettuato l'accesso, nel qual caso è possibile saltare questo passaggio)
  3. L'OAuth SP chiede all'utente di " vuoi autorizzare questa [app wcf] per accedere a questo sito? "
  4. L'utente dice sì e chiude il browser.
  5. L'app WCF ora ha accesso, grazie al protocollo OAuth, al servizio WCF.

Questo funziona perché dietro le quinte, quando l'utente dice "sì" al servizio tramite il browser web, uno speciale credenziale accogliente macchina viene assegnato l'applicazione WCF, che usa con ogni chiamata di servizio WCF il un modo simile sarebbe un nome utente/password.

Controlla la libreria DotNetOpenAuth. Ha il campione e tutto il necessario per farlo funzionare.

+0

Questo post è stato molto perspicace, grazie! Daremo un'occhiata a DotNetOpenAuth. –

1

Dalla lettura della OpenID Authentication 2.0 Specification, mi sembra di essere arrivati ​​a una risposta:

Mentre nulla nel protocollo richiede JavaScript o browser moderni, lo schema di autenticazione gioca bene con "Ajax" messe a punto -style. Ciò significa che un utente finale può dimostrare la propria identità a una parte richiedente senza dover lasciare la propria pagina Web corrente.

OpenID Authentication utilizza solo richieste e risposte standard HTTP (S), quindi non richiede alcuna funzionalità speciale di User-Agent o altro software client. OpenID non è legato all'uso dei cookie o di qualsiasi altro meccanismo specifico di gestione delle sessioni di Relying Party o OpenID Provider. Le estensioni agli User-Agent possono semplificare l'interazione dell'utente finale, anche se non è richiesto l'utilizzo del protocollo.

Ora ho solo bisogno di capire un modo intelligente per farlo funzionare con un relying party a base di WCF ...

1
+0

Sembra davvero semplice. Non è richiesta alcuna interazione con il browser? –

+0

Non è richiesta alcuna interazione con il browser, ma non so come usare questo provider, forse ha alcune dipendenze su ASP.NET che ti fanno attivare la modalità di compatibilità. vedere: http://msdn.microsoft.com/en-us/library/aa702682.aspx Esistono diversi OpenIDMembershipProvider che esistono, non ne ho verificato nessuno. Supponendo che funzionino come previsto, devi solo "collegare" openIdMembershipProvider e quindi dire WCF per usarlo per autenticare le richieste. –

Problemi correlati