【发布时间】:2019-06-15 10:43:48
【问题描述】:
我正在努力简化我的应用程序的登录流程。抢先使用 IdentityServer 进行登录,但我不需要整个令牌服务器,所以我现在正在降级以仅使用 Asp.Net Identity。
以前我可以通过这样做通过第三方登录:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public IActionResult ExternalLogin(string provider, string returnUrl = null)
{
// Request a redirect to the external login provider.
var redirectUrl = Url.Action(nameof(ExternalLoginCallback), "Account", new { returnUrl });
var properties = _signInManager.ConfigureExternalAuthenticationProperties(provider, redirectUrl);
return Challenge(properties, provider);
}
这让我可以通过 (Coinbase) 等第三方登录,但我对它的工作原理感到困惑,因为我看不到他们接收授权码的地方。
我已经从我的 oauth 提供者那里获得了一个授权码,现在我需要获得访问令牌。我可以通过手动发出请求轻松做到这一点,例如
POST /oauth/token HTTP/1.1
Host: authorization-server.com
grant_type=authorization_code
&code=xxxxxxxxxxx
&redirect_uri=https://example-app.com/redirect
&client_id=xxxxxxxxxx
&client_secret=xxxxxxxxxx
但我觉得 .net 中有一些内置功能可以执行此请求并将令牌存储在用户管理器中。有谁知道这样做的内置方法?
【问题讨论】:
标签: c# oauth .net-core authorization