के लिए कुकीज़ और बेयरर प्रमाणीकरण का संयोजन करता है मैंने "वेब एप्लिकेशन (मॉडल-व्यू-कंट्रोलर)" टेम्पलेट और "नेट" का उपयोग करके वीएस 17 में एक नया एएसपी.नेट कोर वेब एप्लिकेशन प्रोजेक्ट बनाया है। फ्रेमवर्क "+" एएसपी.नेट कोर 2 "विन्यास के रूप में। प्रमाणीकरण कॉन्फ़िगरेशन "व्यक्तिगत उपयोगकर्ता खाते" पर सेट है।एएसपी.NET कोर 2.0 एक ही एंडपॉइंट
[Produces("application/json")]
[Route("api/price")]
[Authorize(Roles = "PriceViwer", AuthenticationSchemes = "Cookies,Bearer")]
public class PriceController : Controller
{
public IActionResult Get()
{
return Ok(new Dictionary<string, string> { {"Galleon/Pound",
"999.999" });
}
}
"Cookies,Bearer"
CookieAuthenticationDefaults.AuthenticationScheme
और JwtBearerDefaults.AuthenticationScheme
श्रृंखलाबद्ध द्वारा लिया गया है:
मैं निम्न नमूना समाप्ति बिंदु है।
उद्देश्य अंतिम बिंदु के लिए प्राधिकरण को कॉन्फ़िगर करने में सक्षम होना है ताकि यह टोकन और कुकी प्रमाणीकरण विधियों दोनों का उपयोग करके इसे एक्सेस कर सके।
services.AddAuthentication()
.AddCookie(cfg => { cfg.SlidingExpiration = true;})
.AddJwtBearer(cfg => {
cfg.RequireHttpsMetadata = false;
cfg.SaveToken = true;
cfg.TokenValidationParameters = new TokenValidationParameters() {
ValidIssuer = Configuration["Tokens:Issuer"],
ValidAudience = Configuration["Tokens:Issuer"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Tokens:Key"]))
};
});
तो, जब मैं एक ब्राउज़र का उपयोग कर अंत बिंदु तक पहुँचने का प्रयास, I get the 401 response with a blank html page.
तो मैं के लिए लॉग इन और जब मैं कोशिश:
यहाँ सेटअप मैं प्रमाणीकरण के लिए है मेरी Startup.cs में है एंडपॉइंट को दोबारा एक्सेस करने के लिए, मुझे वही प्रतिक्रिया मिलती है।
फिर, मैं भालू टोकन निर्दिष्ट करके एंडपॉइंट तक पहुंचने का प्रयास करता हूं। कुकी प्रमाणीकरण काम करता है लेकिन एक ही वाहक टोकन पद्धति के रूप में ऊपर उपयोग किसी भी परिणाम नहीं देता है और बस डिफ़ॉल्ट AspIdentity लॉगिन पृष्ठ पर रीडायरेक्ट और 200 देता है, - And that returns the desired result with the 200 response.
तो फिर, अगर मैं [Authorize(AuthenticationSchemes = "Cookies,Bearer")]
निकालने के लिए, स्थिति विपरीत हो जाता है ।
मैं यहाँ दो संभावित समस्याओं देख सकते हैं:
1) ASP.NET कोर की अनुमति नहीं है 'संयुक्त' प्रमाणीकरण। 2) 'कुकीज़' वैध स्कीमा नाम नहीं है। लेकिन फिर उपयोग करने का सही क्या है?
कृपया सलाह दें। धन्यवाद।
क्या आप आइडेंटिटी का उपयोग करते हैं? – Nikolaus
मैं एस्पनेट कोर 1.0 में एक ही कुकी और बेयरर का उपयोग कर रहा हूं। 2.0 में माइग्रेट करने के लिए मुझे एक ही समस्या होगी :( – Ruchan
यह बहुत अच्छा होगा अगर हमें सभी कार्यों पर 'प्रमाणीकरण स्केम' का उल्लेख नहीं करना पड़ेगा। – Ruchan