Я интегрировал приложение Web API c# с Swagger. Я уже реализовал AAD-аутентификацию, которая работает нормально. Теперь я хочу добавить Google аутентификацию. Я сделал код, как показано ниже.
SwaggerConfig.cs
c.OAuth2("oauth2")
.Description("Google Auth")
.Flow("implicit")
.AuthorizationUrl($"https://accounts.google.com/o/oauth2/v2/auth")
.Scopes(scopes => scopes.Add("openid", "Sign you in permission"));
Startup.cs
app.UseExternalSignInCookie(Microsoft.AspNet.Identity.DefaultAuthenticationTypes.ExternalCookie);
googleAuthOptions = new GoogleOAuth2AuthenticationOptions()
{
ClientId = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
ClientSecret = "xxxxxxxxxxxxxxxxxxxx",
};
app.UseGoogleAuthentication(googleAuthOptions);
I авторизуйтесь с экрана входа в систему Google и успешно перенаправьте обратно в пользовательский интерфейс. Но когда я пытаюсь получить доступ к любому методу, я получаю 401 Несанкционированную ошибку, даже если есть токен на предъявителя.
После аутентификации с помощью Google
Я знаю, что не проверял токен доступа в файл Startup.cs, потому что у меня нет знаний. Я просмотрел несколько статей со сложной реализацией, но я хочу добиться этого самым простым способом. Приведенный ниже код работает для AAD без дальнейшей проверки кода.
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new Microsoft.Owin.Security.ActiveDirectory.WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Tenant = Settings.AzureADTenant,
TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
{
ValidAudiences = new string[] { Settings.AzureADAudience, Settings.AzureAppURI },
ValidIssuers = new string[] {
$"https://sts.windows.net/{Settings.AzureADTenant}/",
$"https://login.microsoftonline.com/{Settings.AzureADTenant}/v2.0"
}
}
});