redirect_uri如何在Katana OAuth客户端中将自己设置为正确的值?

时间:2015-08-04 15:29:58

标签: asp.net-mvc oauth oauth-2.0 owin katana

如果您查看下面的代码段,Katana会将redirect_uri /回调路径设置为所有提供商的某个奇怪值。

public FacebookAuthenticationOptions()
  : base(Constants.DefaultAuthenticationType)
{
  CallbackPath = new PathString("/signin-facebook");
  ...
}


public LinkedInAuthenticationOptions() : base("LinkedIn")
{
  this.CallbackPath = new PathString("/signin-linkedin");
  ...
}

如何以及在何处将其重置为将处理回调的操作的正确uri?

1 个答案:

答案 0 :(得分:1)

回调路径与您正在考虑的redirect_uri不同。出于解释的目的,

  • CallbackPath是应用中处理来自身份提供商的响应的URI
  • RedirectUri是用户尝试访问的资源
  • redirect_uri是oAuth请求的参数

如果您查看ApplyResponseChallengeAsync()类的xxxAuthenticationHandler方法,您将看到properties.RedirectUri设置为当前URI的位置,除非您在{{{ 1}}通知。在重定向到身份提供程序时,RedirectToIdentityProvider设置为CallbackPath,redirect_uri对象在状态参数中传递。

当身份提供程序重定向回您的应用程序(特别是CallbackPath)时,将调用properties方法,然后调用Invoke,然后检查当前URI是否为CallbackPath执行。然后,从属性对象中检索InvokeReplyPathAsync(),构建RedirectUri对象,然后将用户重定向到其最终目标ClaimsPrincipal