Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core asp.net核心通过oAuth与azure devops集成的示例_Asp.net Core_Oauth 2.0_Azure Devops - Fatal编程技术网

Asp.net core asp.net核心通过oAuth与azure devops集成的示例

Asp.net core asp.net核心通过oAuth与azure devops集成的示例,asp.net-core,oauth-2.0,azure-devops,Asp.net Core,Oauth 2.0,Azure Devops,我正在尝试使用oauth来促进asp.net核心应用程序的集成,并在Azure DevOps中归档bug。我遵循了指南:使用asp.NETCore3.0中间件配置oauth 当我点击标记为[Authorize]的页面时,它会正确地将我重定向到带有我请求的作用域的devops auth页面,但当我进行授权时,它会将我重定向回服务器,但出现错误: {“Error”:“invalid_client”,“ErrorDescription”:“invalid client auth token.” 我已经

我正在尝试使用oauth来促进asp.net核心应用程序的集成,并在Azure DevOps中归档bug。我遵循了指南:使用asp.NETCore3.0中间件配置oauth

当我点击标记为[Authorize]的页面时,它会正确地将我重定向到带有我请求的作用域的devops auth页面,但当我进行授权时,它会将我重定向回服务器,但出现错误:

{“Error”:“invalid_client”,“ErrorDescription”:“invalid client auth token.”

我已经确认我在配置中使用了正确的端点和正确的客户端密码

        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.NETWebForms,是否有用于Asp.NETCore的示例

(这是全部错误)

处理请求时发生未处理的异常。
异常:OAuth令牌终结点失败:状态:BadRequest;标题:缓存控制:无缓存,无存储,必须重新验证
Pragma:没有缓存
P3P:CP=“CAO DSP COR ADMa DEV CONo TELo CUR PSA PSD TAI IVDo我们的SAMi总线DEM NAV STA UNI COM INT PHY ONL FIN PUR LOC CNT”
设置Cookie:VstsSession=%7B%22PersistentSessionId%22%3A%22f8e30b87-a6eb-470d-9ea2-DDF7BF0DD84%22%2C%22PendingAuthenticationSessionId%22%3A%2200000000-0000-0000-00000000%22%2C%22CurrentAuthenticationSessionId%22%3A%2200000000-0000-0000-00000000%22%7D;域=.visualstudio.com;expires=周一,2024年9月16日22:38:25 GMT;路径=/;保护HttpOnly
X-TFS-ProcessId:98486e68-ccc8-4bc2-9907-F44CE26922A
严格的交通安全:最大年龄为31536000岁;包含子域
活动ID:b0088e1b-d2d0-4788-8328-d97aeeecb447
X-TFS-Session:b0088e1b-d2d0-4788-8328-d97aeeecb447
X-VSS-E2EID:b0088e1b-d2d0-4788-8328-d97aeeecb447
请求上下文:appId=cid-v1:20b3930f-73dc-453a-b660-E3891D782EF
访问控制公开头:请求上下文
X-Content-Type-Options:nosniff
X-MSEdge-Ref:参考A:9DC5A709B96D4D838858E4FC56797DE4参考B:WSTEDGE1017参考C:2019-09-18T22:38:25Z
日期:2019年9月18日星期三22:38:24 GMT
;正文:{“Error”:“invalid_client”,“ErrorDescription”:“invalid client auth token.”;
未知位置
异常:处理远程登录时遇到错误。
Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.HandlerRequestAsync()

如果您发布的授权码是通过url编码的查询字符串完成的,您可以尝试通过请求正文来完成。您可以参考一个示例。

如果您的授权代码帖子是通过url编码的查询字符串完成的,您可以尝试通过请求正文来完成。您可以参考示例。

问题在于OAuthHandler中用于交换令牌授权代码的参数与Azure devops auth示例中使用的参数不同

,第179行

,第74行


您可以通过创建自己的处理程序来解决此问题,该处理程序继承自OAuthHandler,并重写ExchangeCodeAsync方法以使用示例中的参数。

问题在于,OAuthHandler中用于交换令牌授权码的参数与Azure devops auth示例中使用的参数不同

,第179行

,第74行


您可以通过创建自己的处理程序来解决此问题,该处理程序继承自OAuthHandler,并重写ExchangeCodeAsync方法以使用示例中的参数。

是否添加了
app.UseAuthentication()
Configure
功能上?谢谢,我添加了Configuresection@ScottFoster1000添加配置后问题是否已修复?您可以发布此解决方案,并将其标记为可能遇到此问题的人的答案。不,不幸的是,这只是我已有的配置部分。您是否添加了
app.UseAuthentication()
Configure
功能上?谢谢,我添加了Configuresection@ScottFoster1000添加配置后问题是否已修复?您可以发布此解决方案,并将其标记为可能遇到此问题的人的答案。不,不幸的是,这只是我已有的配置部分。
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()