質問編集履歴

6

解決したAmplifyのソースコードのリポジトリを追加

2023/06/03 13:41

投稿

akira_kano1101
akira_kano1101

スコア25

test CHANGED
File without changes
test CHANGED
@@ -389,6 +389,7 @@
389
389
  拙い内容で恐縮ですが、どうぞよろしくお願いします。
390
390
 
391
391
  # 追記
392
+ - https://github.com/kano1101/amplify-id-token
392
393
  ```tsx
393
394
  let user = await Auth.signIn(username, password);
394
395
  if (user.challengeName === "NEW_PASSWORD_REQUIRED") {

5

新パスワード要求に対するサインイン処理が間違えていたので修正

2023/06/03 13:39

投稿

akira_kano1101
akira_kano1101

スコア25

test CHANGED
File without changes
test CHANGED
@@ -392,8 +392,7 @@
392
392
  ```tsx
393
393
  let user = await Auth.signIn(username, password);
394
394
  if (user.challengeName === "NEW_PASSWORD_REQUIRED") {
395
- Auth.completeNewPassword(user, password);
395
+ user = await Auth.completeNewPassword(user, password);
396
- user = await Auth.signIn(username, password);
397
396
  }
398
397
  const token = user.signInUserSession.idToken.jwtToken;
399
398
  ```

4

別解の追記

2023/06/03 13:10

投稿

akira_kano1101
akira_kano1101

スコア25

test CHANGED
File without changes
test CHANGED
@@ -376,22 +376,7 @@
376
376
  srp: '1.0.0',
377
377
  npm: '8.19.3',
378
378
  node: '19.2.0',
379
- v8: '10.8.168.20-node.8',
380
- uv: '1.44.2',
381
- zlib: '1.2.13',
382
- brotli: '1.0.9',
383
- ares: '1.18.1',
384
- modules: '111',
385
- nghttp2: '1.47.0',
386
- napi: '8',
387
- llhttp: '8.1.0',
388
- openssl: '3.0.7+quic',
389
- cldr: '42.0',
390
- icu: '72.1',
379
+ <中略>
391
- tz: '2022f',
392
- unicode: '15.0',
393
- ngtcp2: '0.8.1',
394
- nghttp3: '0.7.0'
395
380
  }
396
381
  % npx tsc -v
397
382
  Version 5.0.4
@@ -402,3 +387,13 @@
402
387
  この問題の解決手法、ご存知の方もしおられましたらご教示いただけると幸いです。
403
388
 
404
389
  拙い内容で恐縮ですが、どうぞよろしくお願いします。
390
+
391
+ # 追記
392
+ ```tsx
393
+ let user = await Auth.signIn(username, password);
394
+ if (user.challengeName === "NEW_PASSWORD_REQUIRED") {
395
+ Auth.completeNewPassword(user, password);
396
+ user = await Auth.signIn(username, password);
397
+ }
398
+ const token = user.signInUserSession.idToken.jwtToken;
399
+ ```

3

GitHubコード追加、入力を環境変数から読み込むよう修正

2023/05/26 12:52

投稿

akira_kano1101
akira_kano1101

スコア25

test CHANGED
File without changes
test CHANGED
@@ -8,9 +8,10 @@
8
8
  ブラウザで実行時に、エラーが発生します。
9
9
 
10
10
  コマンドライン上では動くのですが、ブラウザでは次のようなエラーメッセージが出ます。
11
+
11
- ちなみに、もちろんですがコンパイルは通ります。
12
+ 作成しているソースコードはGitHubアップしましたのでよろしければこちらご確認お願いします。
12
-
13
+
13
- これを解決したいです。
14
+ - [ソースコードのリポジトリ](https://github.com/kano1101/srp)
14
15
 
15
16
  ### 発生している問題・エラーメッセージ
16
17
 
@@ -18,6 +19,7 @@
18
19
  % rm -rf ./node_modules && npm install && npx tsc && http-server
19
20
  ```
20
21
  上記実行後にブラウザ(Google Chrome)で`localhost:8080`にアクセスし、コンソールを確認するとこのようなエラーが出てしまいます。
22
+ このエラーを解消したいです。
21
23
  ```
22
24
  Uncaught TypeError: Failed to resolve module specifier "@aws-sdk/client-cognito-identity-provider". Relative references must start with either "/", "./", or "../".
23
25
  ```
@@ -58,11 +60,14 @@
58
60
 
59
61
  import { SecretsManagerClient, GetSecretValueCommand } from '@aws-sdk/client-secrets-manager';
60
62
 
63
+ // @ts-ignore
61
64
  import { createHmac } from 'crypto';
62
65
 
63
66
  const challengeResponse = async ({
64
- username, password,
67
+ region, secretsManagerId, username, password,
65
68
  }: {
69
+ region: string,
70
+ secretsManagerId: string,
66
71
  username: string,
67
72
  password: string
68
73
  }) => {
@@ -71,9 +76,8 @@
71
76
  const DateHelper = DateHelperWrapper.default;
72
77
  const BigInteger = BigIntegerWrapper.default;
73
78
 
74
- const REGION = 'ap-northeast-1';
75
- const secretsManagerClient = new SecretsManagerClient({ region: REGION });
79
+ const secretsManagerClient = new SecretsManagerClient({ region: region });
76
- const command = new GetSecretValueCommand({ SecretId: '***<略>***' });
80
+ const command = new GetSecretValueCommand({ SecretId: secretsManagerId });
77
81
 
78
82
  const secretsManagerClientResponse = await secretsManagerClient.send(command);
79
83
 
@@ -146,7 +150,6 @@
146
150
  secretHash: SECRET_HASH
147
151
  });
148
152
 
149
-
150
153
  const hkdfResult = {hkdf: undefined as undefined | string};
151
154
  authenticationHelper.getPasswordAuthenticationKey(
152
155
  USERNAME,
@@ -247,11 +250,15 @@
247
250
  }
248
251
 
249
252
 
250
- const username: string = '***<略>***';
253
+ const REGION: string = process.env.REGION || 'missing region';
254
+ const SECRETS_MANAGER_ID: string = process.env.SECRETS_MANAGER_ID || 'missing secrets manager id';
251
- const password: string = '***<略>***';
255
+ const USERNAME: string = process.env.COGNITO_USERNAME || 'missing cognito username';
256
+ const PASSWORD: string = process.env.COGNITO_PASSWORD || 'missing cognito password';
252
257
  console.log(await challengeResponse({
258
+ region: REGION,
259
+ secretsManagerId: SECRETS_MANAGER_ID,
253
- username,
260
+ username: USERNAME,
254
- password,
261
+ password: PASSWORD,
255
262
  }));
256
263
  ```
257
264
 

2

タイトルの修正

2023/05/26 09:58

投稿

akira_kano1101
akira_kano1101

スコア25

test CHANGED
@@ -1 +1 @@
1
- 【TypeScript】@(アットマーク)始まりのモジュールのインポートがうまくいかない
1
+ 【TypeScript】ブラウザで実行する際のモジュールのインポート方法
test CHANGED
File without changes

1

タイトル修正とソースコード追加

2023/05/26 09:54

投稿

akira_kano1101
akira_kano1101

スコア25

test CHANGED
@@ -1 +1 @@
1
- 【TypeScript】AWS SDKを使いブラウザでSRP認証しようとしたがインポートがうまくいかない
1
+ 【TypeScript】@(アットマーク)始まりのモジュールのインポートがうまくいかない
test CHANGED
@@ -24,6 +24,19 @@
24
24
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-05-25/3b8db84f-cb6d-4c51-8fa9-77d8b0b1c930.png)
25
25
 
26
26
  ### 該当のソースコード
27
+
28
+ #### index.html
29
+ ```html
30
+ <!DOCTYPE html>
31
+ <html>
32
+ <head>
33
+ <meta charset="UTF-8">
34
+ </head>
35
+ <body>
36
+ <script src="./dist/index.js"></script>
37
+ </body>
38
+ </html>
39
+ ```
27
40
 
28
41
  #### index.ts
29
42
  ```ts