{"type":"rich","description":"1. \u76ee\u7684 \u672c\u624b\u9806\u66f8\u3067\u306f\u3001 Angular + Django(BFF) + AWS Cognito + MFA(TOTP) \u3092\u4f7f\u7528\u3057\u305f\u5b89\u5168\u306a\u8a8d\u8a3c\u6a5f\u80fd\u3092\u5b9f\u88c5\u3059\u308b\u3002 \u672c\u30b7\u30b9\u30c6\u30e0\u3067\u306f\u3001 Angular\u306fJWT\u3092\u4fdd\u6301\u3057\u306a\u3044 \u69cb\u6210\u3092\u63a1\u7528\u3059\u308b\u3002 JWT\u306fDjango(BFF)\u306e\u307f\u304c\u6271\u3046\u3002 2. \u30b7\u30b9\u30c6\u30e0\u69cb\u6210 @startuml actor User rectangle \"Browser\" { component \"Angular\" as Angular } rectangle \"Django BFF\" { component \"Session\u8a8d\u8a3c\" } rectangle \"Cognito\" { comp\u2026","provider_name":"Hatena Blog","height":"190","width":"100%","blog_title":"sinokuno\u2019s diary","title":"Angular + Django(BFF) MFA\u8a8d\u8a3c \u5b9f\u88c5\u624b\u9806\u66f8","categories":[],"html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fsinokuno.hatenablog.com%2Fentry%2F2026%2F06%2F14%2F143218\" title=\"Angular + Django(BFF) MFA\u8a8d\u8a3c \u5b9f\u88c5\u624b\u9806\u66f8 - sinokuno\u2019s diary\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","image_url":null,"url":"https://sinokuno.hatenablog.com/entry/2026/06/14/143218","version":"1.0","published":"2026-06-14 14:32:18","blog_url":"https://sinokuno.hatenablog.com/","provider_url":"https://hatena.blog","author_name":"sinokuno","author_url":"https://blog.hatena.ne.jp/sinokuno/"}