我有WebForms应用程序。用户可以使用登录名/密码以及标准的OWIN提供程序(Facebook,Twitter等)进行连接。
但是现在我要求使用现有客户的服务器实施另一种方法-OAuth2。
如何最简单地做到这一点?
假设我们有一个来自标准Visual Studio模板的具有身份的新应用程序。
我知道OWIN中还有许多其他提供程序-OAuth,OpenIdConnect等。但是我没有实现纯OAuth2关系的运气。
尝试过OpenIdConnect
new OpenIdConnectAuthenticationOptions
{
ClientId = "XXX",
ClientSecret = "YYY",
Configuration = new OpenIdConnectConfiguration
{
AuthorizationEndpoint = "https://example.com/oauth/authorize",
TokenEndpoint = "https://example.com/oauth/token"
}
}
它似乎正在工作。创建请求,用户在外部IdP上输入凭据,然后返回代码。
但是如何将其附加到标准流程? ReturnUrl应该在哪里处理code
并验证用户身份?似乎没有标准方法可以像其他提供程序一样挑战重定向到\ Account \ RegisterExternalLogin.aspx。
我需要达到标准流量
var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>();
var signInManager = Context.GetOwinContext().Get<ApplicationSignInManager>();
var loginInfo = Context.GetOwinContext().Authentication.GetExternalLoginInfo();
if (loginInfo == null)
{
RedirectOnFail();
return;
}
var user = manager.Find(loginInfo.Login);
if (user != null)
{
signInManager.SignIn(user, isPersistent: false, rememberBrowser: false);
IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response);
}
我缺少什么?
还是我必须使用Microsoft.Owin.Security.OAuth
名称空间中的任何提供程序?
我需要一些完整的工作示例。我不想实现整个沟通。我希望任何OWIN提供者都可以解决这个问题。