मैं वीएस 2013 में एएसपी.नेट के लिए डिफ़ॉल्ट एकल पृष्ठ एप्लिकेशन टेम्पलेट में संशोधन करना चाहता हूं, जो वर्तमान में बेयरर टोकन प्रमाणीकरण का उपयोग करता है। नमूना उसी ऐप में अनुरोधों के लिए टोकन को सत्यापित करने के लिए टोकन सर्वर और मिडलवेयर दोनों बनाने के लिए app.UseOAuthBearerTokens का उपयोग करता है।ओविन बहु-ऐप भालू टोकन प्रमाणीकरण
मैं जो करना चाहता हूं वह उस स्थान पर छोड़ देता है, लेकिन एक दूसरा एप्लीकेशन (एक ही डोमेन में आईआईएस में बाध्य, अलग पथ - उदाहरण के लिए/auth/* प्रमाणीकरण सर्वर के लिए, और/app1/* के लिए अप्प)। दूसरे ऐप के लिए, मैं चाहता हूं कि यह पहले ऐप में प्रमाणीकरण सर्वर द्वारा जारी टोकन स्वीकार करे। यह कैसे पूरा किया जा सकता है? मैं Startup.Auth.cs सिर्फ UseOAuthBearerTokens में कोड के बंद जा रहा में निम्नलिखित की कोशिश की है, लेकिन मैं [अधिकृत] विशेषता के साथ किसी भी अनुरोध करने के लिए 401 प्रतिक्रियाएं मिलती है:
public partial class Startup
{
static Startup()
{
PublicClientId = "self";
UserManagerFactory =() => new UserManager<IdentityUser>(new UserStore<IdentityUser>());
OAuthOptions = new OAuthAuthorizationServerOptions
{
//TokenEndpointPath = new PathString("/Token"),
Provider = new ApplicationOAuthProvider(PublicClientId, UserManagerFactory),
//AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
//AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Active,
AuthenticationType = "ExternalBearer",
AllowInsecureHttp = true,
};
}
public static OAuthAuthorizationServerOptions OAuthOptions { get; private set; }
public static Func<UserManager<IdentityUser>> UserManagerFactory { get; set; }
public static string PublicClientId { get; private set; }
// For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864
public void ConfigureAuth(IAppBuilder app)
{
//// Enable the application to use a cookie to store information for the signed in user
//// and to use a cookie to temporarily store information about a user logging in with a third party login provider
//app.UseCookieAuthentication(new CookieAuthenticationOptions());
//app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
OAuthBearerAuthenticationOptions bearerOptions = new OAuthBearerAuthenticationOptions();
bearerOptions.AccessTokenFormat = OAuthOptions.AccessTokenFormat;
bearerOptions.AccessTokenProvider = OAuthOptions.AccessTokenProvider;
bearerOptions.AuthenticationMode = OAuthOptions.AuthenticationMode;
bearerOptions.AuthenticationType = OAuthOptions.AuthenticationType;
bearerOptions.Description = OAuthOptions.Description;
bearerOptions.Provider = new CustomBearerAuthenticationProvider();
bearerOptions.SystemClock = OAuthOptions.SystemClock;
OAuthBearerAuthenticationExtensions.UseOAuthBearerAuthentication(app, bearerOptions);
}
}
public class CustomBearerAuthenticationProvider : OAuthBearerAuthenticationProvider
{
public override Task ValidateIdentity(OAuthValidateIdentityContext context)
{
var claims = context.Ticket.Identity.Claims;
if (claims.Count() == 0 || claims.Any(claim => claim.Issuer != "LOCAL AUTHORITY"))
context.Rejected();
return Task.FromResult<object>(null);
}
}
जाहिर है मैं हिस्सा है जहां याद कर रहा हूँ दूसरे ऐप में यह सत्यापित करने का कोई तरीका है कि टोकन पहले ऐप से आए थे। किसी तरह की सार्वजनिक हस्ताक्षर कुंजी?
यह केवल अवधारणा के सबूत के लिए है।
संपादित करें: मशीन कुंजी सुझाव पीओसी डेमो के लिए काफी अच्छा काम करता है, और यह जानना अच्छा है कि एएस कार्यान्वयन विकल्प हैं जो अन्य प्रमुख परिदृश्यों का समर्थन करते हैं।
मैं एक डेमो कुंजी (उत्पादन के लिए उपयोग नहीं करते हैं) इस साइट का उपयोग उत्पन्न करने में सक्षम था: http://aspnetresources.com/tools/machineKey
और प्रत्येक अनुप्रयोग के web.config आईआईएस साइट में होस्ट में <system.web>
तत्व के तहत परिणाम रखा । मुझे संसाधन सर्वर के स्टार्टअप क्लास में कुछ एएस-विशिष्ट कॉन्फ़िगरेशन विकल्पों को भी हटाना पड़ा।
+1 वेब सर्वर पर एक ही मशीन कुंजी का उपयोग करने के लिए, एकाधिक सर्वर पर समान पहुंच/बीयरर टोकन की अनुमति देने के लिए। आज मैंने सीखा "डिफ़ॉल्ट डेटा संरक्षण प्रदाता ... आईआईएस पर एएसपी.नेट मशीन कुंजी डेटा सुरक्षा का उपयोग करेगा" https://msdn.microsoft.com/en-us/library/microsoft.owin.security.oauth.oauthauthorizationserveroptions (v = vs.113) .aspx – Dunc
मशीन कुंजी का उपयोग करने के लिए +1 नहीं है। सभी चीजें इस दोपहर से लड़ रहे थे और मशीन कुंजी मेरी समस्या को ठीक करने वाला नहीं है। बस अपना खुद का आईडीटाप्रोटेक्टर घुमाया और यह पता लगाने की कोशिश कर रहा है कि इसे श्रृंखला में कैसे प्राप्त किया जाए और मैं जो भी नमूना आती हूं, वह मशीन की कुंजी को प्यूक कर देती है जैसे कि यह पवित्र अंगूर है। लंगड़ा! –