Web

NextAuth.jsで独自サインインページを作成する場合の注意すべきこと

NextAuth.jsには標準でもサインインページとサインアウトページは用意されているのだが、実務ではそのまま使いづらく、独自のサインインページを用意したいことが多いのではないかと思う。 本稿では、独自のサインインページを作成する場合の設定の概要と注…

NextAuth.jsのセッションからAccessTokenを取得できるようにする。

一般的な話であるが、OAuth認証の基本的な仕組みを前提として確認する。OAuth認証を利用するWebアプリは、OIDCプロバイダから提供されたアクセストークンの正しさを、ユーザプロファイル情報の取得可否によって確認する。つまり、認証の過程においてWebアプ…

DeepL APIの試用

APIを試してみたのでメモ。 import 'dotenv/config' const API_KEY = process.env.DEEPL_API_KEY; const API_DOMAIN = process.env.DEEPL_API_DOMAIN; if (API_KEY == null || API_DOMAIN == null) { throw new Error(); } const API_ENDPOINT = `https://${…

画像を返すAPIの作成

Azure Static Web Appではstaticなファイルにはmiddlewareが機能しないっぽいので、 画像にも認証をかけたい場合はAPIで画像を返すようにする必要がある。 Static Web Appってそういうものだよなーと思っているので仕方ない気がするし、 そもそも認証が必要…

Azure Static Web App ServiceにNext.js(App Router)をデプロイする。

以前にAzure Web App Serviceへのデプロイについての記事を書きました。 ma38su.hatenablog.com 今回はこのデプロイをブラッシュアップして、Azure Pipelineからstatic web appへもデプロイできるようにしました。 2024/2/10 追記 Next.JSのmiddlewareうまく…

GraphQLのサーバサイド認証とその実装のためのContext

新しい技術を試すにあたって、面倒ではあるが、認証までは一通り使いこなせる必要があると感じている。ただ、認証は結構めんどくさいし、すぐ忘れてしまいがちなので、メモを残しておく。 GraphQLサーバに、認証機能を付与するにあたって、Contextを定義する…

Next.JSをAzureのWeb App Serviceにデプロイする

最近、新しいアプリを作ってみたらデプロイに苦労したのでメモを残しておく。 2023.9.13時点で、Next.JSのアプリは、VSCodeの拡張機能や、Web App Serviceから自動設定できるGitHub連携のデフォルトのGitHub Actionでは、Next.JSのデプロイに時間がかかりす…

入門WebAssemblyの読書メモ

読んだ。 本書では、WATという人が読み書きしやすいテキストフォーマットを通して、WebAssemblyを解説している。 実務でWATを直接書くのは想像できないので、教養的な位置付けになるかと思っていたが、結構よかったと思う。 ちなみに、8章で、衝突判定をwasm…

Viteでthreejsを使うときのメモ

Viteはthreejsで使うときも、基本、そのまま使えますが、 多少のご作法は理解しておく必要がありましたので、メモを残しておきます。 JSのコード中で読み込むアセットの取り扱い jsでimportなどせずにパスやURLを指定して読み込むテクスチャやフォントなどで…

express-sessionのセッションIDの生成を浅く確認する。

expressセッションIDの生成についても読んでみる。 var uid = require('uid-safe').sync (中略) function session(options) { var opts = options || {} // get the cookie options var cookieOptions = opts.cookie || {} // get the session id generate…

distrolessを試す。

軽量なコンテナを作るにはdistrolessのイメージをベースにするのがよいらしい。 distrolessは、Googleが管理しているイメージで、Google Container Registryで管理されているっぽい。 github.com 当たり前だけどdockerhubで検索してもでてこない。 とりあえ…

ESP32(M5)でmDNSからIPを取得する

ESP32のライブラリでは、直接、mDNSのURLを指定してもアクセスできない。 ただ、mDNSを利用するためのライブラリは提供されているので、IPを解決してからアクセスすればよい。 例えばraspberry.localのIPを取得したい場合は以下のような感じでできる。 #incl…

グローバルインストールせずにexpress-generatorを使う

express-generatorは、パッケージ名とコマンド名が異なるので、npxでインストールせずに使うのがちょっとめんどくさい。 npx --package express-generator -- express -h ただ、インストールするか?と確認されるので、どこかにはインストールされているのか…

M5StickCからサーバにPostでJsonを送り続ける。

M5Stackでもほとんど同じでいける。 とりあえず、センサーの値をサーバに残したい場合とか。 とりあえずとはいえhttpsにはしないとなー。 #include <M5StickCPlus.h> #include <WiFi.h> #include <HTTPClient.h> #include <ArduinoJson.h> const char* ssid = "xxxx"; const char* pass = "xxxx"; const int capaci</arduinojson.h></httpclient.h></wifi.h></m5stickcplus.h>…

nginxのタイムアウトの設置の確認

Web

nginxのロードバランサに割り当てたバックエンドのサーバがダウンしていることは、タイムアウトで判定される。タイムアウトする時間は以下のパラメータで調整できる。 proxy_connect_timeout 接続自体のタイムアウト proxy_send_timeout バックエンドサーバ…

Reactの開発環境の前にnginxのリバースプロキシを置くときの設定

Web

Reactの開発環境の前にnginxのリバースプロキシを適当に置くと、以下のようなエラーが出る。*1 WebSocket connection to 'wss://127.0.0.1/sockjs-node' failed: Error during WebSocket handshake: Unexpected response code: 404 これは、Reactの開発環境…

manifest.jsonにはcookieが送信されない!

最近クッキーネタ多いな。。。 なんかエラーが起きてると思ったら、manifest.json(Web App Manifest)にCookieが送られていないことが判明。 調べてみると、manifest.jsonファイルについては、オリジンによらず資格情報、 つまりCookieを送らない仕様なのだそ…

nginxのproxy_passの設定の違い

Web

違うのはわかっていても、なかなか覚えらないのでメモしておく。 nginxでリバースプロキシの設定をするとき、 Request URLによって、転送したいURLを指定するが、末尾のスラッシュの有無で振る舞いが異なる。 以下の場合は、指定したサーバに転送はされるが…

First Party CookieのSameSite属性を試す。

一昔前に話題になっていたので、いまさらながらCookieのSameSite属性について調べた。 First Party Cookieと、Third Party Cookieがあるが、今回はFirst Party Cookieの確認。 *1 一言でSameSiteの設定の影響について説明するなら、他のドメインからのアクセ…

First Party CookieとThird Party Cookie

Cookieの仕様について調べているが、 どうもFirst Party Cookieと、Third Party Cookieってのがあるらしい。 普通のCookie、表示して表示しているページと同じドメイン(domainAとする)のCookieはFirst Party Cookieというらしい。 それに対して、表示してい…

CookieのSecure属性を試す。

CookieのSecure属性を付けないとどうなるか試した。Secure属性を有効にすると、httpsのときのみCookieを送信するようになる。 事前準備 事前の準備として、検証の内容的にhttpsアクセスは必須なので、nginxのリバースプロキシでhttps化の設定しておく。*1 今…

NGINXでロードバランサを試す。

docker-composeでnginxでロードバランサを試した。 nginxの後ろに、3台のexpressのサーバに振り分けるようなものを試してみた。 version: '3' services: lb: image: nginx:latest volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf ports: - "80:80" dep…

自己署名証明書の作り方とnginxの設定まで。

いわゆるオレオレ証明書の作り方。 最近、ちょっとしたことを確認しようとしても、https化が必須になっている。 パブリックなネットワークだとLet's Encryptを使うべきなんだけど、 Let's Encryptではドメインが必須なので、ドメインが容易できないと使えな…

threejs + typescript + webpackの環境構築

threejsで大規模なモデル操作とか始めるとTypescriptの型サポートはとても助かる。 以前にも書いていたことがあったが、古かったので消して、代わりに2020年度時点の環境設定を残しておく。 package.json { "name": "threejs-tutorial", "version": "0.0.1",…

grpc-webとenvoyをhttpsで利用する。

grpc-webとenvoyの間の通信のhttps化を試した。 grpc-webの公式には、httpでenovyの設定は載っていて、 envoyの公式には、httpsでの接続のための設定は載っているので、 基本的にはそれらを組み合わせるだけでうまくいった。 envoy.ymlを張っておく。 この例…

HTTPとHTTPSを探る

HTTPSを手を動かして確認する。 opensslを使うと簡易にSSL/TLSのクライアントやサーバを立てられるということなので確認してみる。 ちなみに,HTTPを確認する場合はtelnetを使えば良い。 HTTPS クライアントの動作確認 HTTP/1.0 以下のコマンドを打つと,HTT…