【发布时间】:2022-01-06 10:50:25
【问题描述】:
我使用 SvelteKit 构建了一个 Svelte 应用程序,该应用程序使用 Cognito 进行身份验证。我使用了以下站点:Cognito authentication for your SvelteKit app 指导我进行设置。当通过npm run dev 在本地开发中运行时,该应用程序和与 Cognito 的连接运行良好,但是,当通过npm run build 和 pm2 start /build/index.js 在 EC2 服务器上运行时,它设置了 redirect_uri 部分到 http://localhost:3000 的 Cognito URI。我不知道如何让它重定向到我的实际域。
这里有一些相关的代码 sn-ps 说明它目前在 EC2 上的设置方式:
/etc/nginx/sites-available/domain.conf
server {
server_name example.com;
location / {
root /var/www/html/build;
proxy_pass http://localhost:3000;
}
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
svelte.config.js
import node from '@sveltejs/adapter-node';
/** @type {import('@sveltejs/kit').Config} */
const config = {
kit: {
target: '#svelte',
adapter: node({
out: 'build',
precompress: false,
env: {
host: 'example.com',
port: '443'
}
})
}
};
export default config;
/src/lib/auth.js
import { SvelteKitAuth, Providers } from 'sk-auth';
const DOMAIN = 'myapi.auth.us-east-1.amazoncognito.com';
const config = {
accessTokenUrl: `https://${DOMAIN}/oauth2/token`,
profileUrl: `https://${DOMAIN}/oauth2/userInfo`,
authorizationUrl: `https://${DOMAIN}/oauth2/authorize`,
redirect: 'https://example.com',
clientId: myAWSclientID,
clientSecret: myAWSclientSecret,
scope: ['openid', 'email'],
id: 'cognito',
contentType: 'application/x-www-form-urlencoded'
};
const oauthProvider = new Providers.OAuth2Provider(config);
export const appAuth = new SvelteKitAuth({
providers: [oauthProvider]
});
转到 Cognito 时的预期 URL
https://myapi.auth.us-east-1.amazoncognito.com/login?state=cmVkaXJlY3Q9Lw%3D%3D&nonce=699&response_type=code&client_id=myAWSclientID&scope=openid+email&redirect_uri=https%3A%2F%2Fexample.com%2Fapi%2Fauth%2Fcallback%2Fcognito%2F
转到 Cognito 时的实际 URL
https://myapi.auth.us-east-1.amazoncognito.com/login?state=cmVkaXJlY3Q9Lw%3D%3D&nonce=699&response_type=code&client_id=myAWSclientID&scope=openid+email&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fauth%2Fcallback%2Fcognito%2F
如您所见,它试图将 redirect_uri 设置为http://localhost:3000,而不是预期的https://example.com。我很确定在去 Cognito 时有一些设置允许它设置正确的 redirect_uri - 任何想法或建议将不胜感激!
【问题讨论】:
标签: amazon-ec2 amazon-cognito svelte sveltekit