2017-02-20 2 views
4

Entschuldigt, wenn dies bereits auf dieser Seite oder in der umfangreichen ServiceStack Dokumentation beantwortet - ich ausgesehen haben, aber wenn es nicht vorhanden ist, würde ich einen Zeiger zu schätzen wissen!OAuth2 Authentifizierungs-Plugin für ServiceStack .NET Core-

Ich habe versucht, ein Beispiel Service-Stack (1.0.35) Dienst, der die Verwendung von OAuth2 mit .NET Kern (nicht .NET 4.5.x) zeigt, zu klopfen.

Ich habe this web page gefunden und das AuthFeature-Plugin wie beschrieben hinzugefügt, was für die verfügbaren Anbieter in Ordnung zu sein scheint.

Meine Frage: Die Yahoo, OpenId, Google und LinkedIn-Anbieter scheinen nicht Teil des ServiceStack.Auth Namespace (noch?). Ich habe das Servicestack.Authentication.OAuth2 NuGET-Paket angeschaut, aber dies scheint auf .NET 4.6.x ausgerichtet zu sein. Ist diese Funktionalität verfügbar oder in der Roadmap für ServiceStack .NET Core enthalten?

vollständigen Code Repo meiner Demo-Anwendung:

namespace ServiceStackAuthTest1 
{ 
public class Program 
{ 
    public static void Main(string[] args) 
    { 
     IWebHost host = new WebHostBuilder() 
      .UseKestrel() 
      .UseContentRoot(Directory.GetCurrentDirectory()) 
      .UseStartup<Startup>() 
      .UseUrls("http://*:40000/") 
      .Build(); 

     host.Run(); 
    } 
} 

public class Startup 
{ 
    public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddLogging(); 

    } 


    public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
    { 
     app.UseServiceStack((AppHostBase)Activator.CreateInstance<AppHost>()); 

     app.Run((RequestDelegate)(context => (Task)Task.FromResult<int>(0))); 
    } 

} 

public class AppHost : AppHostBase 
{ 
    public AppHost() 
     : base("My Test Service", typeof(MyService).GetAssembly()) 
    { 
    } 

    public override void Configure(Container container) 
    { 
     Plugins.Add(new AuthFeature(() => new AuthUserSession(), 
      new IAuthProvider[] 
      { 
       new JwtAuthProvider(AppSettings) 
       { 
        HashAlgorithm = "RS256", 
        PrivateKeyXml = AppSettings.GetString("PrivateKeyXml") 
       }, 
       new ApiKeyAuthProvider(AppSettings), //Sign-in with API Key 
       new CredentialsAuthProvider(), //Sign-in with UserName/Password credentials 
       new BasicAuthProvider(), //Sign-in with HTTP Basic Auth 
       new DigestAuthProvider(AppSettings), //Sign-in with HTTP Digest Auth 
       new TwitterAuthProvider(AppSettings), //Sign-in with Twitter 
       new FacebookAuthProvider(AppSettings), //Sign-in with Facebook 
       //new YahooOpenIdOAuthProvider(AppSettings), //Sign-in with Yahoo OpenId 
       //new OpenIdOAuthProvider(AppSettings), //Sign-in with Custom OpenId 
       //new GoogleOAuth2Provider(AppSettings), //Sign-in with Google OAuth2 Provider 
       //new LinkedInOAuth2Provider(AppSettings), //Sign-in with LinkedIn OAuth2 Provider 
       new GithubAuthProvider(AppSettings), //Sign-in with GitHub OAuth Provider 
       new YandexAuthProvider(AppSettings), //Sign-in with Yandex OAuth Provider   
       new VkAuthProvider(AppSettings), //Sign-in with VK.com OAuth Provider 
      })); 
    } 
} 

public class MyService : Service 
{ 

} 
+0

Ich plane einen .NET-Core-kompatiblen Anschluss von ServiceStack.Auth.OAuth2.OAuth2Provider als OSS zu schreiben, aber zuerst ist ich bin auf der Suche, um zu sehen, ob es bereits geschehen. Hat jemand das schon mal gemacht? –

+0

In der Zwischenzeit Abstimmung über https://servicestack.uservoice.com/forums/176786-feature-requests/suggestions/19534429-support-oauth2-on-net-core –

Antwort

3

ServiceStack des OAuth2 hängt von DotNetOpenAuth die leider nicht .NET-Core unterstützt, so gibt es derzeit keine Unterstützung für OAuth2.

+1

Das ist in Ordnung (und vielen Dank für eine offizielle Antwort!) - Ich bin interessiert zu wissen, ob es zukünftige Pläne gibt, diese OAuth2-Anbieter zu unterstützen? Ich fange an zu denken, dass ich (sollte?) Eine öffentliche Nginx-Gatekeeper/Reverse-Proxy-Art der Sache bekommen, um die Auth behandeln und nur die relevanten Token an meine internen Service-Stack-Dienste weiterleiten. – Jay

+0

@Jay wir wollen OAuth2 in .NET Core unterstützen, müssen nur die Lösung finden, die funktioniert und am besten mit ServiceStack integriert. – mythz

+0

@mythz Jede Bewegung auf diesem? Google Auth ist die einzige Sache, die uns daran hindert, zu .net core zu wechseln! – JMK

Verwandte Themen