Я пытаюсь придумать лучший способ сопоставить токены пользователю. Я думаю, что столкнулся с общей проблемой авторизации и аутентификации.
Я создаю рынок, на котором моя платежная служба поддерживается полосой, поэтому в настоящее время я разрешаю вход в систему с использованием полосы.
Я регистрирую свою полосовую службу следующим образом:
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");
//...
});
Так как полосу я использую для обработки платежей, мне нужен токен для выполнения определенного поведения, например создания события оплаты или подписки на него, но я не хочу для обеспечения того, чтобы у моих пользователей была учетная запись полосы для просмотра данных на моем сайте.
Поэтому я хотел бы добавить дополнительные способы входа в систему, но мне нужно связать этих пользователей вместе
app.UseGoogleAuthentication(new GoogleOptions()
{
AuthenticationScheme = "Google",
DisplayName = "Google",
SignInScheme = COOKIE_AUTH,
ClientId = "sdlfkjgsdlkfjgsdf-sdfadsfasdf.apps.googleusercontent.com",
ClientSecret = "myClientSecretBase64==",
});
Однако, если я сделаю это, мне понадобится способ связать мой логин Google и мой логин учетной записи Stripe. Раньше я использовал IdentityServer4. Обычно токен-серверы получают через API. Так что размещение токен-сервера кажется излишним, если его будет использовать только одно приложение.
Есть ли простой способ разрешить аутентификацию, при этом давая возможность подключаться к внешним API, таким как stripe?
Примечание: Если для решения требуется IdentityServer 4, я не возражаю, я просто предпочел бы не размещать 2 отдельных приложения