首页 > 解决方案 > Github 的 ServiceStack OAuth 问题

问题描述

我正在使用 dotnet core 3.1,最新版本的 ServiceStack,我正在尝试使用 Google、Microsoft 和 Github OAuth。

/auth到目前为止,对于谷歌和微软,当我导航到:并点击“Github”按钮时,我对 Github 没有任何问题。

我被重定向到 GitHub 并显示同意页面。

Personal user data
Full access

当我单击时Authorize,我将被重定向回我的本地主机:/login#f=AccessTokenFailed

如果我登录到我的开发人员设置,我会看到 1 个用户。

所以,我不确定这可能是 ServiceStack 中的一些工作流问题,还是我的实现中的一些问题。

根据我的实现,我有这个:

appsettings.json

"oauth.github.Scopes": "user,user:email",
"oauth.github.ClientId" :"xxx",
"oauth.github.ClientSecret": "xxx",

...

Plugins.Add(new AuthFeature(
            () => new AuthUserSession(),
            new IAuthProvider[] {
                new JwtAuthProvider
                {
                    HashAlgorithm = "HS256",
                    RequireSecureConnection = false, 
                    AuthKeyBase64 = "xxx", 
                    CreatePayloadFilter = (payload,session) => {},
                    PopulateSessionFilter = (session, token, req) => {}
                },
                new GoogleAuthProvider(appSettings),
                new GithubAuthProvider(appSettings),
                new MicrosoftGraphAuthProvider(appSettings)                }
        ));

在初始重定向回我的应用程序后,当我再次导航到 /auth 时,我看到我没有登录,但是当我再次单击 Github 按钮时,我只是再次被重定向回来,并在 URL (AccessTokenFailed) 中显示相同的错误消息(没有同意提示或任何东西)。

知道这里可能有什么问题吗?

标签: oauth-2.0servicestack

解决方案


此问题是由于新的GitHub OAuth 应用程序需要通过 Authorization Header 提交访问令牌,现在已从此提交解决。

现在可以从 MyGet 上提供的最新 v5.9.3+ 中获得此更改


推荐阅读