OAuth2 Symfony Api 邮递员没有通过守卫身份验证器

问题描述

我正在使用 Symfony 构建 API,并且我添加了 OAuth 身份验证以保护 API。 但是当我使用 Postman 测试 API 并尝试获取新的访问令牌时,Postman 不会通过防护验证器获取令牌并且不返回令牌并且用户未连接。

Postman OAuth configuration

但是当我使用前端进行测试时,我访问要连接的这条路由(localhost:8000/api/connect/github),然后这条路由获取令牌(localhost:8000/api/access_token/github)用户已连接,我可以在此处看到令牌,但在邮递员上看不到。

这是我用来将用户与 OAuth(在我的 SecurityController 中)连接的两条路线:

/**
 * @Route("/connect/{service}",name="api_connect")
 */
public function connect(string $service): RedirectResponse
{
    /** @var GithubClient $client */
    $client = $this->clientRegistry->getClient($service);
    return $client->redirect(['read:user','user:email']);
}

/**
 * @Route("/access_token/{service}",name="api_access_token")
 */
public function accesstoken(Request $request,string $service): JsonResponse
{
    try {
        return new JsonResponse(["Access Token" => $request->getSession()->get("Access Token")],200);
    } catch (IdentityProviderException $e) {
        return new JsonResponse(["Error" => [
            "Message" => $e->getMessage(),"Code" => $e->getCode()
        ]
        ]);
    }
}

在我的身份验证器中,我使用了这两种方法获取令牌并将其通过会话和标头传递:

public function getCredentials(Request $request)
{
    $accesstoken = $this->fetchAccesstoken($this->getClient());
    $request->headers->set("Access Token",$accesstoken);
    return $accesstoken;
}

public function onAuthenticationSuccess(Request $request,TokenInterface $token,string $providerKey)
{
    $request->getSession()->set("Access Token",$request->headers->get("Access Token"));
    return null;
}

因此,在我的 SecurityController 的 accesstoken 方法中,我尝试在请求标头中获取令牌。它应该给我这样的东西: { "Access Token": "gho_6YGwaGYfInYUPAvcbUhTzkq2VdplIO3GC0MN" }

但在 Postman 中,它返回给我:

{ "Access Token": null }

所以我猜邮递员没有通过身份验证器,但我不明白为什么,你们有什么解释吗?

非常感谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)