【发布时间】:2020-10-11 01:35:46
【问题描述】:
我正在尝试找出将令牌映射到用户的最佳方式。我想我遇到了一个常见的问题授权与身份验证。
我正在创建一个市场,我的支付服务由条带支持,因此我目前允许使用条带登录。
我像这样注册我的条带服务:
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddOAuth<OAuthOptions, StripeConnectOAuthHandler<OAuthOptions>>(
StripeConnectDefaults.AuthenticationScheme, options => {
options.SaveTokens = true;
options.ClientId = Configuration["Stripe:ClientId"];
options.ClientSecret = Configuration["Stripe:ClientSecret"];
options.TokenEndpoint = StripeConnectDefaults.TokenEndpoint;
options.AuthorizationEndpoint = StripeConnectDefaults.AuthorizationEndpoint;
options.UserInformationEndpoint = StripeConnectDefaults.UserInformationEndpoint;
options.Scope.Add("read_write");
options.CallbackPath = new PathString("/signin-stripeconnect");
//...
});
由于我使用 stripe 来处理付款,因此我需要令牌来执行某些行为,例如创建付款事件或订阅一个付款事件,但我不想强制我的用户必须有一个 stripe 帐户才能查看数据我的网站。
所以我想添加其他登录方式,但我需要将这些用户链接在一起
app.UseGoogleAuthentication(new GoogleOptions()
{
AuthenticationScheme = "Google",
DisplayName = "Google",
SignInScheme = COOKIE_AUTH,
ClientId = "sdlfkjgsdlkfjgsdf-sdfadsfasdf.apps.googleusercontent.com",
ClientSecret = "myClientSecretBase64==",
});
但是,如果我这样做,我需要一种方法来链接我的谷歌登录和我的条带帐户登录。在此之前,我使用的是 IdentityServer4。通常,令牌服务器与 API 是分开的。所以托管令牌服务器似乎有点矫枉过正,如果只有一个应用程序会使用它。
是否有一种简单的方法允许身份验证,同时仍然能够连接到诸如条带之类的外部 api?
注意:如果解决方案需要 IdentityServer 4,我不介意,我宁愿不必托管 2 个单独的应用程序
【问题讨论】:
标签: c# authentication .net-core oauth-2.0 authorization