Я пытаюсь использовать oauth для облегчения интеграции с основным приложением asp.net и регистрации ошибок в DevOps Azure.Я следовал руководству: https://docs.microsoft.com/en-us/azure/devops/integrate/get-started/authentication/oauth?view=azure-devops с использованием промежуточного программного обеспечения asp.net core 3.0 для настройки oauth.
Когда я попадаю на страницу, отмеченную [Авторизоваться], она правильно перенаправляет меня на авторизацию devopsстраница с областями, которые я запросил, но когда я авторизуюсь, она перенаправляет меня обратно на мой сервер, но имеет ошибку:
{"Ошибка": "invalid_client", "ErrorDescription": "Недопустимый токен авторизации клиента. "}
Я подтвердил, что использую правильные конечные точки и правильный клиентский секрет в моей конфигурации.
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = "ado";
})
.AddCookie()
.AddOAuth("ado", options =>
{
options.ClientId = "[AppId from devops]";
options.ClientSecret = "[Client Secret from devops]";
options.CallbackPath = new PathString("/signin-ado");
options.AuthorizationEndpoint = "https://app.vssps.visualstudio.com/oauth2/authorize";
options.TokenEndpoint = "https://app.vssps.visualstudio.com/oauth2/token";
options.Scope.Add("vso.identity");
options.Scope.Add("vso.work_full");
options.ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "UserId");
options.ClaimActions.MapJsonKey(ClaimTypes.Email, "EmailAddress", ClaimValueTypes.Email);
options.ClaimActions.MapJsonKey(ClaimTypes.Name, "Name");
});
services.AddControllersWithViews();
Конфигурирование:
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
Примеры, которые я нашел, используя oAuth с devops, взяты из веб-форм Asp.Net, есть ли для ядра asp.net?
(Это полная ошибка)
An unhandled exception occurred while processing the request.
Exception: OAuth token endpoint failure: Status: BadRequest;Headers: Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
P3P: CP="CAO DSP COR ADMa DEV CONo TELo CUR PSA PSD TAI IVDo OUR SAMi BUS DEM NAV STA UNI COM INT PHY ONL FIN PUR LOC CNT"
Set-Cookie: VstsSession=%7B%22PersistentSessionId%22%3A%22f8e30b87-a6eb-470d-9ea2-ddf7b1f0dd84%22%2C%22PendingAuthenticationSessionId%22%3A%2200000000-0000-0000-0000-000000000000%22%2C%22CurrentAuthenticationSessionId%22%3A%2200000000-0000-0000-0000-000000000000%22%7D; domain=.visualstudio.com; expires=Mon, 16-Sep-2024 22:38:25 GMT; path=/; secure; HttpOnly
X-TFS-ProcessId: 98486e68-ccc8-4bc2-9907-f44cec26922a
Strict-Transport-Security: max-age=31536000; includeSubDomains
ActivityId: b0088e1b-d2d0-4788-8328-d97aeeecb447
X-TFS-Session: b0088e1b-d2d0-4788-8328-d97aeeecb447
X-VSS-E2EID: b0088e1b-d2d0-4788-8328-d97aeeecb447
Request-Context: appId=cid-v1:20b3930f-73dc-453a-b660-e3891d782eef
Access-Control-Expose-Headers: Request-Context
X-Content-Type-Options: nosniff
X-MSEdge-Ref: Ref A: 9DC5A709B96D4D838858E4FC56797DE4 Ref B: WSTEDGE1017 Ref C: 2019-09-18T22:38:25Z
Date: Wed, 18 Sep 2019 22:38:24 GMT
;Body: {"Error":"invalid_client","ErrorDescription":"Invalid client auth token."};
Unknown location
Exception: An error was encountered while handling the remote login.
Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler<TOptions>.HandleRequestAsync()