【发布时间】:2019-04-28 00:20:27
【问题描述】:
我有一个基于网络的应用程序。此应用程序允许用户按照 Startup.cs 中的代码使用 Google Auth 注册/登录
services.AddAuthentication().AddGoogle(googleOptions =>
{
googleOptions.ClientId = Configuration["ClientId"];
googleOptions.ClientSecret = Configuration["CliSecret"];
...
});
这一切都与开箱即用的身份系统完美配合,因此我可以注册用户。
但是,我还希望用户在网站的单独区域注册后能够使用单独的帐户“连接”到其他 Google 服务。
例如,我可能希望用户关联他们的 AdWords 帐户。
他们将通过非身份流向 Google 进行身份验证,相关信息(令牌、刷新令牌等)将独立存储在数据库中(即它不会在 AspNetUSers 表中存储“用户”)。
我可以在首次调用 google 之前更改控制器中的身份验证范围吗?
在这种情况下使用相同的身份验证服务但有一些额外的范围会很好。那可能吗?
或者,在 Startup.cs 中有 另一个 Google 部分...可能像:
services.AddAuthentication().AddGoogle(googleOptions =>
{
googleOptions.ClientId = Configuration["ClientId"];
googleOptions.ClientSecret = Configuration["CliSecret"];
googleOptions.Scope.Add("https://www.googleapis.com/auth/adwords"); //*** THIS IS THE EXTRA SCOPE NEEDED ***
...
});
【问题讨论】:
-
您将需要多个客户端 ID,就像您建议的那样。
-
啊 - 所以我不能使用相同的客户端 ID 并根据情况调整范围配置?另外,如果我在 Google Auth 中使用不同的客户端 ID,我该如何选择我想要的?
-
您指定连接时要使用的clientId。
-
为应用程序授予范围。要请求额外的范围,用户必须重新授权应用程序。重点在于,您的应用应该提前了解它可能使用的范围,即使它们并不适用于每个用户或所有情况。
-
干杯克里斯。我实际上已经走这条路了。该应用程序请求相同的东西,我只是在 2 个地方管理范围的不同用途。
标签: c# asp.net-mvc asp.net-core asp.net-identity