-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cannot authorize with amplify aws and NextJS 14 app router. #13956
Comments
Hello, @cong-tri 👋. There's a lot of details in this issue and we might need to break down to determine the root cause. To start, can you let me know what documentation you're following or where you started with this? One issue might be that there's some discrepancies on how you're configuring MFA (placing it within the scopes for OAuth, but then marking it as Second thing that stands out is the use of Is there any chance you could create a sample repo to share that we can make suggestions to the most recent code being used and for reproducing the exceptions you're getting? |
For starting, i am following aws amplify nextjs documentation section "https://docs.amplify.aws/nextjs/build-a-backend/server-side-rendering/" for my task. |
If i setup : And if i enable ssr: true it could not work for me. It just browser return a error "Unable to get user session after successful sign-in." in the last step. |
@cong-tri, are you able to also share what the network response form Cognito is when you get that initial 400 status code and the |
@cong-tri, wanted to check in again and see if you saw the above comment and questions. |
Closing this issue as we have not heard back from you. If you are still experiencing this, please feel free to reply back and provide any information previously requested and we'd be happy to re-open the issue. Thank you! |
Before opening, please confirm:
JavaScript Framework
React, Next.js
Amplify APIs
Authentication, Storage
Amplify Version
v6
Amplify Categories
auth, storage, hosting
Backend
None
Environment information
System:
OS: Windows 10 10.0.19045
CPU: (12) x64 Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz
Memory: 19.96 GB / 31.82 GB
Binaries:
Node: 20.15.0 - C:\Program Files\nodejs\node.EXE
npm: 10.8.2 - C:\Program Files\nodejs\npm.CMD
Browsers:
Internet Explorer: 11.0.19041.1566
npmPackages:
@ampproject/toolbox-optimizer: undefined ()
@ant-design/icons: ^5.3.7 => 5.3.7
@ant-design/nextjs-registry: ^1.0.0 => 1.0.0
@aws-amplify/adapter-nextjs: ^1.2.11 => 1.2.11
@aws-amplify/adapter-nextjs/api: undefined ()
@aws-amplify/adapter-nextjs/data: undefined ()
@babel/core: undefined ()
@babel/runtime: 7.22.5
@edge-runtime/cookies: 4.1.1
@edge-runtime/ponyfill: 2.4.2
@edge-runtime/primitives: 4.1.0
@hapi/accept: undefined ()
@mswjs/interceptors: undefined ()
@napi-rs/triples: undefined ()
@next/font: undefined ()
@opentelemetry/api: undefined ()
@tanstack/query-codemods: undefined ()
@tanstack/react-query: ^5.50.1 => 5.51.1
@types/node: ^20 => 20.14.2
@types/react: ^18 => 18.3.3
@types/react-dom: ^18 => 18.3.0
@vercel/nft: undefined ()
@vercel/og: 0.6.2
acorn: undefined ()
amphtml-validator: undefined ()
anser: undefined ()
antd: ^5.18.1 => 5.18.1
arg: undefined ()
assert: undefined ()
async-retry: undefined ()
async-sema: undefined ()
aws-amplify: ^6.4.4 => 6.4.4
aws-amplify/adapter-core: undefined ()
aws-amplify/analytics: undefined ()
aws-amplify/analytics/kinesis: undefined ()
aws-amplify/analytics/kinesis-firehose: undefined ()
aws-amplify/analytics/personalize: undefined ()
aws-amplify/analytics/pinpoint: undefined ()
aws-amplify/api: undefined ()
aws-amplify/api/server: undefined ()
aws-amplify/auth: undefined ()
aws-amplify/auth/cognito: undefined ()
aws-amplify/auth/cognito/server: undefined ()
aws-amplify/auth/enable-oauth-listener: undefined ()
aws-amplify/auth/server: undefined ()
aws-amplify/data: undefined ()
aws-amplify/data/server: undefined ()
aws-amplify/datastore: undefined ()
aws-amplify/in-app-messaging: undefined ()
aws-amplify/in-app-messaging/pinpoint: undefined ()
aws-amplify/push-notifications: undefined ()
aws-amplify/push-notifications/pinpoint: undefined ()
aws-amplify/storage: undefined ()
aws-amplify/storage/s3: undefined ()
aws-amplify/storage/s3/server: undefined ()
aws-amplify/storage/server: undefined ()
aws-amplify/utils: undefined ()
babel-packages: undefined ()
browserify-zlib: undefined ()
browserslist: undefined ()
buffer: undefined ()
bytes: undefined ()
ci-info: undefined ()
cli-select: undefined ()
client-only: 0.0.1
commander: undefined ()
comment-json: undefined ()
compression: undefined ()
conf: undefined ()
constants-browserify: undefined ()
content-disposition: undefined ()
content-type: undefined ()
cookie: undefined ()
cross-spawn: undefined ()
crypto-browserify: undefined ()
css.escape: undefined ()
data-uri-to-buffer: undefined ()
debug: undefined ()
devalue: undefined ()
domain-browser: undefined ()
edge-runtime: undefined ()
eslint: ^8 => 8.57.0
eslint-config-next: 14.2.4 => 14.2.4
events: undefined ()
find-cache-dir: undefined ()
find-up: undefined ()
fresh: undefined ()
get-orientation: undefined ()
glob: undefined ()
gzip-size: undefined ()
http-proxy: undefined ()
http-proxy-agent: undefined ()
https-browserify: undefined ()
https-proxy-agent: undefined ()
icss-utils: undefined ()
ignore-loader: undefined ()
image-size: undefined ()
is-animated: undefined ()
is-docker: undefined ()
is-wsl: undefined ()
jest-worker: undefined ()
json5: undefined ()
jsonwebtoken: undefined ()
loader-runner: undefined ()
loader-utils: undefined ()
lodash.curry: undefined ()
lru-cache: undefined ()
mini-css-extract-plugin: undefined ()
moment: ^2.30.1 => 2.30.1
nanoid: undefined ()
native-url: undefined ()
neo-async: undefined ()
next: 14.2.4 => 14.2.4
node-fetch: undefined ()
node-html-parser: undefined ()
ora: undefined ()
os-browserify: undefined ()
p-limit: undefined ()
path-browserify: undefined ()
picomatch: undefined ()
platform: undefined ()
postcss: ^8 => 8.4.38 (8.4.31)
postcss-flexbugs-fixes: undefined ()
postcss-modules-extract-imports: undefined ()
postcss-modules-local-by-default: undefined ()
postcss-modules-scope: undefined ()
postcss-modules-values: undefined ()
postcss-preset-env: undefined ()
postcss-safe-parser: undefined ()
postcss-scss: undefined ()
postcss-value-parser: undefined ()
process: undefined ()
punycode: undefined ()
querystring-es3: undefined ()
raw-body: undefined ()
react: ^18 => 18.3.1
react-builtin: undefined ()
react-dom: ^18 => 18.3.1
react-dom-builtin: undefined ()
react-dom-experimental-builtin: undefined ()
react-experimental-builtin: undefined ()
react-is: 18.2.0
react-refresh: 0.12.0
react-server-dom-turbopack-builtin: undefined ()
react-server-dom-turbopack-experimental-builtin: undefined ()
react-server-dom-webpack-builtin: undefined ()
react-server-dom-webpack-experimental-builtin: undefined ()
recharts: ^2.12.7 => 2.12.7
regenerator-runtime: 0.13.4
sass-loader: undefined ()
scheduler-builtin: undefined ()
scheduler-experimental-builtin: undefined ()
schema-utils: undefined ()
semver: undefined ()
send: undefined ()
server-only: 0.0.1
setimmediate: undefined ()
shell-quote: undefined ()
socket.io: ^4.7.5 => 4.7.5
socket.io-client: ^4.7.5 => 4.7.5
source-map: undefined ()
source-map08: undefined ()
stacktrace-parser: undefined ()
stream-browserify: undefined ()
stream-http: undefined ()
string-hash: undefined ()
string_decoder: undefined ()
strip-ansi: undefined ()
superstruct: undefined ()
tailwindcss: ^3.4.1 => 3.4.4
tar: undefined ()
terser: undefined ()
text-table: undefined ()
timers-browserify: undefined ()
tty-browserify: undefined ()
typescript: ^5 => 5.4.5
typescript-cookie: ^1.0.6 => 1.0.6
ua-parser-js: undefined ()
unistore: undefined ()
util: undefined ()
uuid: ^10.0.0 => 10.0.0 (9.0.1)
vm-browserify: undefined ()
watchpack: undefined ()
web-vitals: undefined ()
webpack: undefined ()
webpack-sources: undefined ()
ws: undefined ()
zod: undefined ()
npmGlobalPackages:
@aws-amplify/cli: 12.12.3
npm: 10.8.2
typescript: 5.5.4
Describe the bug
I have a project using nextjs 14 app router and amplify aws. I cannot handle login when i have called signIn and after called confirmSignIn to entered the challengeResponse OTP code to authorized. But cannot work for me, it just return error "Unable to get user session following successful sign-in.".
I have set up configure Amplify at client side with ssr = true and server side: runWithAmplifyServerContext with createServerRunner.
I don't know where the bug at, so i think may be at set up domain for cookie or something else can be missing.
Expected behavior
I want to code can work because i have this project for a long times
Sorry about the bug because i have studied amplify aws just a little.
Please help me.
Reproduction steps
Code Snippet
// client side file config:
"use client";
import { Amplify } from "aws-amplify";
import { cognitoUserPoolsTokenProvider } from "aws-amplify/auth/cognito";
import { CookieStorage } from "aws-amplify/utils";
import { getAmplifyConfig } from "../../amplify-config";
const config = getAmplifyConfig();
Amplify.configure(config, {
// ssr: true,
});
cognitoUserPoolsTokenProvider.setKeyValueStorage(
new CookieStorage({
domain:
http://${process.env.NEXT_PUBLIC_DOMAIN_NOT_SECURE}
,path:
${process.env.NEXT_PUBLIC_BASE_PATH}
,secure: false,
// sameSite: "strict",
})
);
export default function ConfigureAmplifyClientSide() {
return null;
}
I have called this component at the top children in layout.tsx
// server side file config :
import { createServerRunner } from "@aws-amplify/adapter-nextjs";
import { getAmplifyConfig } from "../../amplify-config";
const config = getAmplifyConfig();
export const { runWithAmplifyServerContext } = createServerRunner({
config: config,
});
// sign in component:
/** @Format */
"use client";
import React, { useEffect, useState } from "react";
import { useRouter } from "next/navigation";
import { App, Button, Form, Input, Modal } from "antd";
import Title from "antd/es/typography/Title";
import Typography from "antd/es/typography/Typography";
import {
AuthError,
SignInOutput,
confirmSignIn,
signIn,
} from "aws-amplify/auth";
import { v4 as uuidv4 } from "uuid";
type Account = {
username: string;
password: string;
};
function SignInForm() {
const [isModalOpen, setIsModalOpen] = useState(false);
const [isModal, setIsModal] = useState(false);
const [valid, setValid] = useState(false);
const [uuid, setUUID] = useState();
const [account, setAccount] = useState();
const [timeLeft, setTimeLeft] = useState(30);
const [output, setOutPut] = useState();
const { message } = App.useApp();
const [form] = Form.useForm();
const router = useRouter();
const errorException = "[DUPLICATED_DEVICE]"; // a handle error custom
useEffect(() => {
if (isModalOpen !== true) return;
}, [timeLeft, isModalOpen]);
const onFinish = async ({
username,
password,
}: {
username: string;
password: string;
}) => {
const myuuid = uuidv4();
};
const handleReturnOutputSignin = async () => {
try {
const output = await signIn({
username: account?.username ?? "",
password: account?.password,
options: {
clientMetadata: {
uuid: uuid ?? "",
mfaMethod: "EMAIL",
},
},
});
return output;
} catch (error) {
handleThrowErrorMessage(error);
}
};
const handleContinueToSignin = async () => {
try {
const output = await handleReturnOutputSignin();
console.log("output >>", output);
};
const handleSignInNextSteps = async ({ otpCode }: { otpCode: string }) => {
try {
if (!output) await handleReturnOutputSignin();
};
const handleResendOTPCode = async () => {
try {
await handleReturnOutputSignin();
setTimeLeft(30);
} catch (error) {
handleThrowErrorMessage(error);
}
};
const handleThrowErrorMessage = (error: any, errorKey: string = "") => {
console.error(error);
};
return (
<>
<Form
form={form}
name="basic"
onFinish={onFinish}
autoComplete="off"
style={{ width: 800 }}
>
<Title level={3}>Username:</Title>
<Form.Item
name="username"
style={{ width: "100%" }}
rules={[{ required: true, message: "Please input your username!" }]}
initialValue={"+84326034561"}
>
</Form.Item>
);
}
export default SignInForm
Log output
aws-exports.js
// .env file:
NEXT_PUBLIC_BASE_PATH=/public-portal
NEXT_PUBLIC_AWS_COGNITO_DOMAIN=https://cognito-idp.ap-southeast-1.amazonaws.com/ap-southeast-1_xxxxxx
NEXT_PUBLIC_AWS_COGNITO_IDENTITY_POOL_ID=ap-southeast-1:xxxxxx
NEXT_PUBLIC_AWS_COGNITO_USER_POOL_ID=ap-southeast-1_xxxxxxxx
NEXT_PUBLIC_AWS_COGNITO_CLIENT_ID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
NEXT_PUBLIC_DOMAIN_NOT_SECURE=192.xxx.x.xxx:xxxx # for not secure
NEXT_PUBLIC_DOMAIN_SECURE=dev.xxxxx.com:xxxx # for secure
export const getAmplifyConfig = (domain: string =
${process.env.NEXT_PUBLIC_DOMAIN_NOT_SECURE}
): ResourcesConfig => {const amplifyConfig: ResourcesConfig = {
Auth: {
Cognito: {
// identityPoolId: process.env.NEXT_PUBLIC_AWS_COGNITO_IDENTITY_POOL_ID ?? '',
userPoolId: process.env.AWS_COGNITO_USER_POOL_ID ?? "",
userPoolClientId: process.env.AWS_COGNITO_CLIENT_ID ?? "",
loginWith: {
oauth: {
domain: process.env.AWS_COGNITO_DOMAIN ?? "",
scopes: [
"email",
"openid",
"profile",
"aws.cognito.signin.user.admin",
],
redirectSignIn: [
http://${domain}${process.env.NEXT_PUBLIC_BASE_PATH}/signin
],redirectSignOut: [
http://${domain}${process.env.NEXT_PUBLIC_BASE_PATH}/sign-out
],responseType: "token",
},
email: false,
username: true,
phone: false,
}
},
};
return amplifyConfig;
};
Manual configuration
No response
Additional configuration
No response
Mobile Device
No response
Mobile Operating System
No response
Mobile Browser
No response
Mobile Browser Version
No response
Additional information and screenshots
No response
The text was updated successfully, but these errors were encountered: