【问题标题】:ASP.NET Core OAuth2.0. Calling external API on behalf of the userASP.NET Core OAuth2.0。代表用户调用外部 API
【发布时间】:2018-04-17 08:42:50
【问题描述】:

对不起,这里的问题很长,但感觉就像我用谷歌搜索了有关该主题的所有内容......

我有 OpenID Connect - 兼容的第 3 方端点(服务 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 时,令牌存储在哪里?

感谢您对此提供的任何帮助,这似乎是一个流行的案例,但网络上没有足够的信息。

【问题讨论】:

  • 我自己在一次会议上提出了这个问题并得到了这个答复......首先是第 2 部分,因为这很容易......当你保存令牌 = true 时,它​​们会保存在 cookie 中。第 1 部分是一个设计选择,这就是为什么它上面的材料如此稀缺......我看到人们保存在存储中或在它持续时使用它,因为你可以使用令牌调用 API 多长时间不取决于你的 cookie生命周期而不是访问令牌的生命周期...希望我们在这里得到更好的答案...

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


【解决方案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 课程,Introduction to IdentityServer for ASP.NET Core。

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2020-07-02
    • 2018-09-13
    • 2022-12-18
    • 2018-08-03
    相关资源
    最近更新 更多