🔑
OAuth2.0を利用してUECクラウドアカウント認証の電通大生しか使えないのWebアプリをReactで作る方法
電通大生諸君!
電通大生のみが利用可能なアプリケーションをつくってみたくないか?
当然常識の範囲内で実装してみたいが、そんな君達のためにReactで電通大か否かを認証するやり方を教えて存じよう!
注意!
当然だが、良識の範囲内でおこなうこと。
知ってる人は知ってると思うが、UECクラウドアカウントは 当局から常に監視されている
あたりまえだが、やばいアプリを作成したら相応の処分が来る
絶対この方法でやばいアプリを作成してはならない
なにやるの?
- OAuth2.0をつかってUECクラウドアカウントのみログイン可能にする
- ログインしたユーザー情報を取得する
GCPからAPIトークンの取得
UECクラウドアカウントでGCPにログイン
- Chromeのアカウントは自身のクラウドアカウントにすること
プロジェクトを作成する
- ポイントは組織と場所にuec.ac.jpを追加すること
OAuth同意画面
- ポイントはここで内部を選択すること
OAuth2.0 クライアントIDの作成
- localhostと、localhost:Portを追加することがミソ
Reactを書こう!
OAuth2.0で使う有能ライブラリのインストール
- これをインストールせよ
https://www.npmjs.com/package/@react-oauth/google - あとは使い方にしたがって、適当に書くだけ
src/app/page.tsx
'use client'
import { GoogleOAuthProvider } from "@react-oauth/google";
import Form from "./pages/Form";
export default function Home() {
return (
<main>
<GoogleOAuthProvider clientId="">
<Form />
</GoogleOAuthProvider>
</main>
)
}
src/app/pages/Form.tsx
import { GoogleLogin, useGoogleLogin } from '@react-oauth/google'
import React from 'react'
import jwt_decode from 'jwt-decode'
type OAuthResponse = {
credential: string
clientId: string
select_by: string
}
type UserInfo = {
aud: string
azp: string
email: string
email_verified: boolean
exp: number
family_name: string
given_name: string
hd: string
iat: number
iss: string
jti: string
locale: string
name: string
nbf: number
picture: string
sub: string
}
const Form = () => {
return (
<div>
<GoogleLogin
onSuccess={
(response) => {
console.log(response)
console.log(jwt_decode(response.credential))
}
}
onError={() => {
console.log("error")
}}
useOneTap={true}
auto_select={true}
/>
</div>
)
}
export default Form
- ミソはresponseのcredentialがJWTで与えられるので、適当にデコードすること
試しにつかってみよう!
- ログインボタンをおすとこんな感じの画面が登場するぞ
- 組織外だとログインできない
- JWTの中身をみると、ユーザーのメールアドレスなどをチェックできる
ログイン後にWebページを表示するとかは?
- そのくらい電通大生なら当然できるとおもうので、ここでは解説しない
Discussion