2012-12-19 6 views
7

Ich schreibe eine einfache Web-Anwendung in MVC 4, und ich möchte OAuth with Trello, so dass ich einen Benutzer fragen können, mit ihren Trello Details anmelden und dann einige ihrer Karten sehen .OAuth mit benutzerdefinierten oauth Provider in MVC 4

Kann jemand Informationen über die Erstellung eines benutzerdefinierten oauth-Providers zur Unterstützung von Out-of-the-Box oauth Providern zur Verfügung stellen? Von dem, was ich sehen kann, ich denke, Ich muss einen benutzerdefinierten OAUTH Provider erstellen (Unterklasse IAuthenticationClient und verwenden Sie das) - ist das richtig?

+0

Haben Sie jemals eine Lösung zum Hinzufügen von benutzerdefinierten Anbietern gefunden? – Billdr

Antwort

11

Okay, ich verbrachte die 11 Stunden seit meinem Kommentar schreiben eine benutzerdefinierte oAuth-Klasse für SO. Morgen werde ich einen Außendienst machen. Ich bin nicht aufgeregt.

Hier ist, was ich getan habe:

  1. eine Klasse Datacontract erstellen für Ihre erwartete Json/Xml. Ich ging voran und implementierte alles, was SO zurückgibt, aber wenn Sie nur Autorisierung machen, können Sie es wahrscheinlich auf eine ID und einen DisplayName reduzieren.

  2. Erstellen Sie eine Klasse, die OAuth2Client von DotNetOpenAuth.AspNet.Clients erweitert. Verwenden Sie die DotNetOpenAuth GitHub page für Beispiele. Dies ist der längste und schmerzhafteste Schritt, besonders wenn Ihre json-Serialisierung verrostet ist.

  3. Öffnen Sie /App_Start/AuthConfig.cs und geben Sie OAuthWebSecurity.RegisterClient(new YourClass(Your, Initalization, Params), "The Name You Want to Show Up On Your oAuth Login Button", ExtraDataIfYouNeedIt; irgendwo im RegisterAuth() Abschnitt ein. Ich habe nicht festgestellt, wofür der ExtraData-Parameter steht, aber ich brauchte ihn in meinem Fall nicht. Hoffentlich wirst du es nicht in deinem brauchen.

Bearbeiten: Aktualisierte GitHub-Link.

+1

'ExtraData' ist nur ein 'IDictionary'-Objekt; Sie können es für alles verwenden, was Sie wollen. Ich verwendete es, um einige CSS-Klassen zu binden, auf die ich in einer Teilansicht zugreifen wollte, als ich verfügbare Anbieter auflistete. Nette Arbeit, BTW. –

+1

Brilliant, danke. Ich hatte keine Chance, dies zu tun, weil ich auf andere Themen aufmerksam geworden bin, aber ich beabsichtige, es bald zu sehen, also werde ich mir ansehen, was du getan hast, und dich zu dir zurückrufen! –

+2

Alter Thread, aber beachten Sie, dass die DotNetOpenAuth-Seite verschoben wurde: https://github.com/DotNetOpenAuth/DotNetOpenAuth – Joe