2016年3月5日 星期六

google Identity Toolkit Java quick start


Google 認證設定,首先參考官方文件~

https://developers.google.com/identity/toolkit/web/quickstart/java

先申請 google develop console 的 project~
要申請的前題~就是弄個 google帳號來~

其 API 要用 OAuth2 的認證~
所以在 [Credentials] 開始建 OAuth2 的設定 (Credentials建立項目,大多在左上角的 Create Credentials 按鈕裡...老實說常常找不到他就是=_=|||)

設定內容~要注意的是有些限制,先練習用 java quickstart 的設定


Authorized JavaScript Origins:
For this quick-start app, set this to: http://localhost:4567
Authorized Redirect URI:
For this quick-start app, set this to: http://localhost:4567/gitkit

重點是取得
Client ID 和 Client secret

新增API~
接著然後在 [Overview] search  "Identity Toolkit"


將剛剛設定的OAuth Client 指定過來
在 providers Google 的項目裡面,還可以下拉選取 client ID...如果多個的話也要看一下~


底下會生出對應的 Client configuration 和 Server configuration 抄起來,之後設定還要用QQ~

準備 Service Account
就是你看 Server configuration  裡面的  serviceAccountEmail 和 serviceAccountPrivateKeyFile 資料~那個要申請的~
Service Account 在 [Credentials]  新增~重點重點是~~要選 P12 的(之前呆呆的沒看文件QQ)就會產出下載 key檔...

在 service account manager 裡,可以再重gen P12 檔,可以產生多筆~~
但是之前的沒保留住...就~好像找不到地方再下載了@@b...所以檔案要留好~
(是說現在也不少 駭客 都是偷這些公私鑰檔,真的別太隨便就是)
service account 和 server conf 的對應資料寫法如下

"serviceAccountEmail": " 帳號ID @ 專案名.iam.gserviceaccount.com",
(在 service account manager 裡看到的 Email Address 項目就是)
 "serviceAccountPrivateKeyFile": "D:/xxxxx/xxxxxxxx-yyyy.p12",
(產生出來的 P12 檔 實體檔案路徑,看要放那隨你高興,路徑指對就好~)


在 client conf 內,還有差一個 api key,那就是再把他生一組 key 來用


接著把這 key 貼進 client conf 內~基本上,相關設定就差不多了~~

Client configuration
{
  "widgetUrl": "http://localhost:4567/gitkit",
  "signInSuccessUrl": "/",
  "signOutUrl": "/",
  "oobActionUrl": "/",
  "apiKey": "申請來的 browser Key",
  "siteName": "this site",
  "signInOptions": ["password","google"]
}

     
Server configuration
{
  "clientId": "申請來的 client Id",
  "projectId": "所建立的專案名",
  "serviceAccountEmail": "申請的 serviceAccount Email ",
  "serviceAccountPrivateKeyFile": " P12 檔放的地方",
  "widgetUrl": "http://localhost:4567/gitkit",
  "cookieName": "gtoken"
}

然後下載  Java quick start 包(他本身就是一個簡易的 http server)
https://github.com/googlesamples/identity-toolkit-java/archive/master.zip
(maven 包的,總之就是下載,解開,直接 import,complire...)

然後寫一個純文字檔 gitkit-server-config.json ,把 server conf 貼進去,放在 src 下
(因為 quickstart 寫死檔名了麻,如果想改名,應該就去改 Java Code 就可以)

把 P12 放在寫好的路徑下~

在 quickstart 解開的安裝包裡, 有個檔 templates/gitkit-widget.html
編輯開啟,把自己的 client conf 貼進去~ 還有是說 底下那段 conf 是也有不太一樣就是~
那段是特定要加給 servlet 讀進去改掉的內容 (JAVASCRIPT_ESCAPED_POST_BODY)~
  var config =
    // Copy and paste client configuration here
  ;
  // The HTTP POST body should be escaped by the server to prevent XSS
  window.google.identitytoolkit.start(
      '#gitkitWidgetDiv', // accepts any CSS selector
      config,
      'JAVASCRIPT_ESCAPED_POST_BODY');

然後終於~~~可以測試了Orz...
Run GitkitExample.java

http://localhost:4567/


然後按按紐,就會導去
http://localhost:4567/gitkit
接著 server 就會轉去 google 再下來了~~
(有興趣開 firebug就發現他有努力的在跑一些資料下來,不過基本上都是 google 自己做掉了,總之重點是有看有沒有紅字Orz...如果看到啥403 還 404 之類的,就大概知道問題在那)


然後就被嫌棄了XD...
如果你開 firebug 之類的看 console...應該就可以看到一串錯誤訊息,大概就是
https://www.googleapis.com/identitytoolkit/xxxxxxx?key=YYYYYYYY
確認一下,那個 apiKey的網段設定是怎樣的~
如果通過的話~就會看到 授權頁面囉~

授權頁的資訊在這裡設定的,包含連絡人等....


整體的設定可以說蠻混亂的,項目也很多~
不過目前我自己整理的說法大概就是~

應用應該都要用 domain name...申請時要有 naming...
然後開發時可以用 localhost (突然覺得localhost 真是個有趣的 domain name...XD)

Identity Toolkit API  --> 是 google api,每個 API 都要有 API_KEY 才能用
這個 API_KEY 還會對應 可使用的網址 pattern,production僅量設定死一點,以防別人盜用~

google 和你的server 認證的方式是 OAuth2 協定。這個協定會有 Server conf/Client conf。
申請的各種 clientId/ service account 和 公私鑰檔 就是為了完成  server conf/client conf 的內容~

而 Java/php/..etc quick start 都是一個簡單的範例 server,實作了如何應用 server conf/client conf 的內容和 google 溝通~
不過實際面後續還有如何將這些項目整進原本自己的系統內應用~

總覺得這路比想像的長阿|||Orz...

沒有留言: