背景: 使用Kestrel和Apache Core作为反向代理。对本网站中的所有流量使用https协议。
我的问题是,如何使用Google API强制回复使用https而非回调uri中的http?
我拨打Google API后收到错误消息。错误消息是“Error:redirect_uri_mismatch”。我已经使用https作为协议在Google API控制台上正确设置了回调。
请求详细信息如下:
> response_type=code
client_id=myclientidnum.apps.googleusercontent.com
redirect_uri=http://mysub.domain.com/signin-google
scope=openid profile email
state=long_long_code
如果您有任何想法,请给我写信。
答案 0 :(得分:0)
当我尝试通过使用Kestrel的反向代理在Apache上运行的ASP.NET核心Web应用程序配置Google身份验证时,我也收到了redirect_uri_mismatch错误。
错误是由于将授权重定向URI设置为https
。我将其更改为http
后,Google身份验证就有效。
因此,假设您的域名为example.com
,请从
https://example.com/signin-google
到
http://example.com/signin-google
答案 1 :(得分:0)
问题在于服务器未使用反向代理转发的标头,因此它正在请求不正确的协议。您需要:
SELECT
tj.Id, QuestionData.questionId, QuestionData.questionValue
FROM
MyTableWithJson tj
CROSS APPLY OPENJSON(tj.JsonContent)
WITH ([questionId] INT '$.QuestionId', [questionValue] NVARCHAR(300) '$.Value') AS QuestionData
WHERE
QuestionData.type = 'multichoice' // supposing you have a type on this entity
答案 2 :(得分:0)
我遇到了同样的问题,并通过以下代码解决了这个问题。
app.Use(async (ctx, next) =>
{
ctx.Request.Scheme = "https";
await next();
});
ForwardedHeadersOptions forwardOptions = new
ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor |
ForwardedHeaders.XForwardedProto,
RequireHeaderSymmetry = false
};
forwardOptions.KnownNetworks.Clear();
forwardOptions.KnownProxies.Clear();
app.UseForwardedHeaders(forwardOptions);
既然 google 和 facebook 不支持生产应用程序中的 http 重定向,并且反向代理背后的 kestrel 在 http 上运行也面临着同样的问题。我使用上面的代码将所有请求的架构强制到 https(这是我在 https 反向代理背后的安全打赌),一切正常