2015-05-31 13 views
6

मैं जो चाहता हूं वह एएसपी.नेट कोर में जेडब्ल्यूटी जेनरेशन और जेडब्ल्यूटी उपभोग की एक विधि है।जेडब्ल्यूटी बीयर टोकन फ्लो

कोई ओएथ 2 प्रवाह नहीं है, मेरे पास ओएथ 2 के साथ काम करने वाला पहचान सर्वर 3 है लेकिन यह एक ऐप तक पहुंचने के लिए बहुत अधिक है जब मैं दोनों पक्षों का मालिक हूं।

मुझे जो कठिनाई का मुख्य स्रोत है, वह ASP.NET कोर में Microsoft.Owin.Security.Jwt के बराबर है। इस सूची में कुछ भी नहीं https://www.myget.org/gallery/aspnetvnext संबंधित लगता है। या वह पैकेज वास्तव में एएसपी.नेट कोर के साथ प्रासंगिक रहने के लिए है?

+0

https://gist.github.com/siacomuzzi/1832edeb905a9582a7dd:

आप (GitHub रेपो के लिंक सहित) एक पूरी लंबाई की व्याख्या मेरा यह ब्लॉग पोस्ट पर देख सकते हैं? – adaam

+0

धन्यवाद। मैं पहले से ही इस पर आ गया हूं और इस दौरान इसका उपयोग कर रहा था, लेकिन यह केवल जेडब्ल्यूटी उपभोग के लिए है, पीढ़ी नहीं है और माइक्रोसॉफ्ट.ऑविन पैकेज का उपयोग करता है जो कि एएसपीनेट 5 में बहिष्कृत किए गए प्रतीत होते हैं। वे उपयोग करने योग्य हैं बस वे Microsoft.AspNet.A प्रमाणीकरण का उपयोग नहीं करते हैं, जहां सब कुछ चल रहा है। –

उत्तर

5

यदि आप अपने स्वयं के जेडब्ल्यूटी टोकन जेनरेट करने के लिए एक (सरल) तरीका ढूंढ रहे हैं, तो आपको सीधे JwtSecurityTokenHandler का उपयोग करना चाहिए। आप MyGet भंडार आप का उल्लेख पर System.IdentityModel.Tokens पैकेज में इसे पा सकते हैं (लेकिन संस्करण अब थोड़ा पुराना है) या सीधे Azure AD भंडार पर, System.IdentityModel.Tokens.Jwt पैकेज में: https://www.myget.org/gallery/azureadwebstacknightly

बेशक

, करने के लिए एक मानक प्रोटोकॉल का उपयोग जारी करें और अपने जेडब्ल्यूटी टोकन को पुनः प्राप्त करें अनुशंसित से अधिक है और ओएथ 2 और ओपनआईडी कनेक्ट शायद इसके लिए सर्वश्रेष्ठ उम्मीदवार हैं।

ध्यान दें कि IdentityServer केवल सर्वर है कि ASP.NET 5. मैं व्यक्तिगत रूप से OAuth2 प्राधिकरण सर्वर मिडलवेयर कि कटाना 3 के साथ आता है के एक उन्नत कांटा पर काम कर रहा हूँ पर काम करता है नहीं है और है कि एक अलग दृष्टिकोण प्रदान करता है: https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server

app.UseOAuthBearerAuthentication(new JwtBearerOptions 
{ 
    AutomaticAuthenticate = true, 
    AutomaticChallenge = true, 
    Audience = "http://localhost:54540/", 
    Authority = "http://localhost:54540/" 
}); 

app.UseOpenIdConnectServer(options => 
{ 
    options.Provider = new AuthorizationProvider(); 
}); 

इस परियोजना के बारे में अधिक जानने के लिए, मैं http://kevinchalet.com/2016/07/13/creating-your-own-openid-connect-server-with-asos-introduction/ पढ़ने की सलाह देते हैं।

आपको अधिक जानकारी की आवश्यकता होने पर मुझे https://jabbr.net/#/rooms/AspNetCore पर पिंग करने के लिए स्वतंत्र महसूस करें।

+0

'JwtSecurityTokenHandler' का अंतिम पैरामीटर' साइनिंग प्रमाण पत्र 'है। लेकिन मैं इसका उदाहरण कैसे बना सकता हूं? – Sean

+0

@ सेन http://stackoverflow.com/a/33531139/542757 – Pinpoint

2

मैंने OpenIddict का उपयोग करना शुरू कर दिया है और मुझे लगता है कि यह वही है जो आपको चाहिए।

ConfigureServices:

यह अनिवार्य रूप से सभी विन्यास मैं जरूरत है

services.AddIdentity<ApplicationUser, ApplicationRole>() 
      .AddEntityFrameworkStores<ApplicationDbContext>() 
      .AddDefaultTokenProviders() 
      .AddOpenIddictCore<Application>(config => config.UseEntityFramework()); 

कॉन्फ़िगर

app.UseOpenIddictCore(builder => 
{ 
    // tell openiddict you're wanting to use jwt tokens 
    builder.Options.UseJwtTokens(); 
    // NOTE: for dev consumption only! for live, this is not encouraged! 
    builder.Options.AllowInsecureHttp = true; 
    builder.Options.ApplicationCanDisplayErrors = true; 
}); 

// use jwt bearer authentication 
app.UseJwtBearerAuthentication(options => 
{ 
    options.AutomaticAuthenticate = true; 
    options.AutomaticChallenge = true; 
    options.RequireHttpsMetadata = false; 
    options.Audience = "http://localhost:58292/"; 
    options.Authority = "http://localhost:58292/"; 
}); 

वहाँ एक या दो तरह के रूप में अन्य छोटे बातें, कर रहे हैं अपने डीबीकॉन्टेक्स्ट को OpenIddictContext<ApplicationUser, Application, ApplicationRole, string> से प्राप्त करने की आवश्यकता है। http://capesean.co.za/blog/asp-net-5-jwt-tokens/

संबंधित मुद्दे