首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Identity Server 4、外部提供程序和Web API

Identity Server 4、外部提供程序和Web API
EN

Stack Overflow用户
提问于 2020-03-10 12:45:51
回答 1查看 849关注 0票数 1

我正在开发的系统由以下几部分组成:-网关下的一些服务(Ocelot) -移动客户端(iOS) - Identity Server4

移动客户端还没有准备好,所以我使用Postman来模拟来自它的请求。我的问题是使用外部提供商实现身份验证,比如Google。这是我第一次使用IS4,所以我有一些误解和困难。对不起,如果我的问题太抽象了,或者我错过了显而易见的问题。我使用所有这些教程成功地部署了IS4,它以适当的方式使用密码凭据流:I请求用于访问令牌,发送用户凭据,它返回令牌,我可以成功地使用它来访问我的API方法。

与外部提供商的情况是不同的。我已经概述了本教程(https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/google-logins?view=aspnetcore-3.1)和其他一些教程,并将其中的代码添加到IS项目中。我可以成功地登录到谷歌,使用IS4网页上的一个按钮,它与IS 4快速入门用户界面模板。但是没有机会使用API。据我所知,在这样的工作流程中,客户端应用程序应该去寻找令牌,而不是像示例中的本地用户那样,给Google Auth提供商。我用Postman模拟了它,得到了一个奇怪的没有数据的access_token和包含用户名、电子邮件等的it_token。我尝试通过对我的id_token的请求来使用这个API。结果始终为401。

我哪里错了?我应该如何使用来自Google的令牌来构建对API的请求?或者我有误解,应该有另一个流程:客户端转到具有特定请求的IS,转到Google,然后向客户端返回适当的令牌?

以下是Web API应用程序端的身份验证配置:

代码语言:javascript
运行
复制
private void ConfigAuthentication(IServiceCollection services)
{
    services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options =>
            {
                options.Authority = "http://localhost:5000";
                options.RequireHttpsMetadata = false;
                options.Audience = "k_smart_api";
            });
}

下面是Google-Auth在IdentityServer端的配置:

代码语言:javascript
运行
复制
services.AddAuthentication().AddGoogle(opts => {
   opts.ClientId = "My google client Id";
   opts.ClientSecret = "my google client secret";
   opts.SignInScheme = IdentityConstants.ExternalScheme;
   opts.SaveTokens = true;
});

下面是我获取访问令牌的方法:

postman exampple

EN

回答 1

Stack Overflow用户

发布于 2020-06-25 00:29:24

从Google返回的令牌仅用于在Identity Server中对用户进行身份验证。然后,在Identity Server收到这些令牌后,它会让用户登录并创建传递给客户端的新令牌(ID+access)。您应该考虑在客户端中使用授权码流对用户进行身份验证并获取令牌。然后使用收到的访问令牌来访问您的API。

请记住,从Google收到的令牌不是用来访问您的API的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60611678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档