【发布时间】:2014-02-23 04:14:15
【问题描述】:
我决定试一试新的 Google Oauth2 中间件,它几乎破坏了一切。这是我来自 startup.auth.cs 的提供程序配置。打开后,包括 google 提供程序在内的所有提供程序都会在 Challenge 上获得 500 个内部服务器。但是,内部服务器错误的详细信息不可用,我无法弄清楚如何为 Katana 中间件打开任何调试或跟踪。在我看来,他们似乎急于将 google Oauth 中间件推出市场。
//// GOOGLE
var googleOptions = new GoogleOAuth2AuthenticationOptions
{
ClientId = "228",
ClientSecret = "k",
CallbackPath = new PathString("/users/epsignin")
SignInAsAuthenticationType = DefaultAuthenticationTypes.ExternalCookie,
Provider = new GoogleOAuth2AuthenticationProvider
{
OnAuthenticated = context =>
{
foreach (var x in context.User)
{
string claimType = string.Format("urn:google:{0}", x.Key);
string claimValue = x.Value.ToString();
if (!context.Identity.HasClaim(claimType, claimValue))
context.Identity.AddClaim(new Claim(claimType, claimValue, XmlSchemaString, "Google"));
}
return Task.FromResult(0);
}
}
};
app.UseGoogleAuthentication(googleOptions);
动作方法代码:
[AllowAnonymous]
public ActionResult ExternalProviderSignIn(string provider, string returnUrl)
{
var ctx = Request.GetOwinContext();
ctx.Authentication.Challenge(
new AuthenticationProperties
{
RedirectUri = Url.Action("EPSignIn", new { provider })
},
provider);
return new HttpUnauthorizedResult();
}
【问题讨论】:
-
我不确定具体问题是什么 - 您可以尝试为 Google 软件包设置符号,看看哪里出了问题。以下是为武士刀设置符号的一些说明 - katanaproject.codeplex.com/…
-
这似乎是 CallBackPath 的问题。是否有可能在为此提供者设置回调路径时为所有提供者全局设置该道具。 src还没挖,只是一个想法……
-
当你说所有提供者的全局属性 => 你想为所有提供者设置相同的值吗?无法为所有提供者自动设置相同的值,但您可以根据需要手动设置它们。您应该确保在相应门户的相应应用程序设置中注册了此重定向 uri。如果您没有明确提供,则这些中间件中的每一个都有一个默认的 CallBackPath。例如,这个 google 中间件的默认值为 /signin-google。
-
我认为您没有理解我的问题。我确实看到了每个提供者的财产。我想知道是否以某种方式为一个提供者设置属性会应用于所有其他 Oauth2 提供者。
-
我不这么认为。我无法重现此问题。您介意上传一个在某处重现此问题的独立项目吗?
标签: asp.net-mvc-4 asp.net-mvc-5 katana