ASP.NET Core OAuth2.0。代表用户调用外部API

时间:2017-11-04 21:17:01

标签: asp.net .net asp.net-mvc oauth asp.net-core

对不起这里的长问题,但感觉就像我在Google上搜索了一切...

我有OpenID Connect - 兼容的第三方端点(服务A)我想在ASP.NET Core MVC应用程序中用作身份提供程序。服务支持ImplicitCode Flow。这个时候没问题。此外,我希望能够代表登录用户呼叫服务A的api。我知道在Controller内通过以下方式做起来相对容易:

var token = await HttpContext.GetTokenAsync("access_token");
var client = new HttpClient();
client.SetBearerToken(accessToken);
var content = await client.GetAsync("https://A.com/api");

但是,如果我想在两者之间分配这样的访问权限,那么就说很少有微服务(或者如果我想安排后台延迟工作),就会出现一些问题:

  1. 我怎么能分享" access_token" /" refresh_token"在这种情况下?我应该处理OAuth事件并在某个地方持有令牌吗?有什么建议吗?
  2. 当我们在中间件中指定SaveTokens = true时,存储的令牌在哪里?
  3. 我感谢任何帮助,似乎是一个受欢迎的案例,但没有足够的信息在网上。

1 个答案:

答案 0 :(得分:1)

有几个来源。看一眼: https://identityserver4.readthedocs.io/en/release/

此外,还有一些关于这个主题的Pluralsight课程。例如:

Filip Ekberg(https://app.pluralsight.com/library/courses/asp-dot-net-core-oauth/table-of-contents)开始使用ASP.NET Core和OAuth。

https://mva.microsoft.com/en-US/training-courses/introduction-to-identityserver-for-aspnet-core-17945?l=oygMZtBPE_5806218965处有Microsoft Virtual Academy类,IdentityServer for ASP.NET Core简介。

我希望这会有所帮助。