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?
risposta
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:
- L'applicazione si apre un browser in cui l'utente vede il Sito web del servizio WCF (il fornitore di servizi OAuth)
- L'utente accede con il relativo OpenID (anche se l'utente potrebbe già aver effettuato l'accesso, nel qual caso è possibile saltare questo passaggio)
- L'OAuth SP chiede all'utente di " vuoi autorizzare questa [app wcf] per accedere a questo sito? "
- L'utente dice sì e chiude il browser.
- 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.
Questo post è stato molto perspicace, grazie! Daremo un'occhiata a DotNetOpenAuth. –
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 ...
Prendere un OpenIdMembershipProvider (forse altri esistono). Then configure Message security in WCF, with Username authentication, then you can use the ASPNET MembershipProvider to authenticate your user. Non penso che sia possibile trovare una soluzione più semplice;)
Sembra davvero semplice. Non è richiesta alcuna interazione con il browser? –
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. –
- 1. Google OpenId: nessun endpoint OpenID trovato (intermittente)
- 2. Utilizzo di OpenID con PhoneGap e Window Phone 7
- 3. Convenzioni di denominazione con servizio Web/WCF e nessun sovraccarico
- 4. Dove è finito il modulo di prova WCF del browser?
- 5. OAuth/OpenID basato sul browser con accesso permanente
- 6. Utilizzo di WCF con classi astratte
- 7. "Nessun endpoint OpenID trovato" nel sito Web di Azure
- 8. Autenticazione OpenID e accesso API
- 9. WCF: utilizzo dello streaming con contratti di messaggistica
- 10. WCF + SSL non trovato nessun endpoint
- 11. OpenID Connect con token JWT stateless
- 12. Implementazione di OpenID con PHP
- 13. OmniAuth e openid: ottenimento di determinati campi dal provider openid
- 14. Quanto è sicuro openID?
- 15. È possibile eseguire un traceroute nel browser?
- 16. WCF: è possibile la serializzazione di interfacce generiche?
- 17. Combinazione di autenticazione OpenID e Facebook
- 18. Streaming con WCF e MTOM
- 19. Utilizzo di WCF in un'applicazione ASP.Net e best practice
- 20. Errore WCF - Nessun endpoint in ascolto su
- 21. È possibile eseguire l'applicazione WPF sul browser?
- 22. WCF utilizzo, chiusura ed estensioni
- 23. Utilizzo di enumerazioni nei servizi dati WCF
- 24. Utilizzo di WCF su Localhost su Azure
- 25. MSN è un provider OpenID?
- 26. Utilizzo della versione di istanza di CreateMap e Map con un servizio WCF?
- 27. 'Nessun modulo' quando utilizzo CocoaPods
- 28. Autenticazione Android con Google OpenID. Cosa succederà?
- 29. OpenID Authlogic con identificativi openID multipli per account
- 30. Qual è il destino di OpenID?
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. –