又LAG隨性筆記
  • 關於我
  • 作品集
  • 生活隨筆
  • 與我聯絡
  • 隨手扎

隨手扎

May 17, 2022

【用Keycloak學習身份驗證與授權22】Keycloak使用基本概念:前導

在這之前,都是先請大家照著做,沒有好好說明關於Keycloak的使用概念。接著幾天,會開始介紹如何使用Keycloak,主要概念有哪些。 雖然如此,這幾篇會成爲iT鐵人賽的緩衝。 也就是說,同樣不會介紹到非常詳細。帶大家有點概念而已。 (有機會的話,再多做深入補充吧) 而這裏,仍會分成兩個小部分: 第一個部分 這部分會着重在一些基本設定上。包含 Realm 、 Client 、 Scope 、 Claim 等。 第二個部分 接著會把着眼點放到帳號系統身上。也就是 User(Account) 、 Group 和 Role 等設定。 在略微說明什麼是單點登入(SSO)的同時,更重要的仍然是與身份驗證與授權相關的概念。
May 17, 2022

【用Keycloak學習身份驗證與授權21】在Flow這段小旅途外的風景

在這一小段路中介紹了Password Flow、Implicit Flow、Code Flow、Refresh Token Flow、Client Credentials Flow、PKCE、Device Code Flow。有些模式已經被發現可能有潛在風險,有些模式無法單獨使用。這或許還不是全部,至少到現在為止都還沒有提到過金融級應用Flow–CIBA。

Client Initiated Backchannel Authentication Profile(CIBA)

本小節也不會詳細介紹CIBA(Client Initiated Backchannel Authentication)。儘管CIBA現在階段還只是草案(Draft),但在Keycloak v15版本中已經可以使用。大概也已經確實有一些應用使用。

為什麼你不該繼續使用Implicit Flow?

在談到Implicit Flow時候,提到過:

將存取權杖暴露在使用者面前也不是非常好的做法

May 16, 2022

【用Keycloak學習身份驗證與授權20】Device Code(2)

光要完成這個範例就花了幾乎整整一天
做完後決定…來拆篇


這第二部份,將有部份內容會在【實戰篇】展開。 今天就先來看看成果。

成果發表

May 16, 2022

【用Keycloak學習身份驗證與授權19】Device Code(1)


      +----------+                                +----------------+
      |          |>---(A)-- Client Identifier --->|                |
      |          |                                |                |
      |          |<---(B)-- Device Code,      ---<|                |
      |          |          User Code,            |                |
      |  Device  |          & Verification URI    |                |
      |  Client  |                                |                |
      |          |  [polling]                     |                |
      |          |>---(E)-- Device Code       --->|                |
      |          |          & Client Identifier   |                |
      |          |                                |  Authorization |
      |          |<---(F)-- Access Token      ---<|     Server     |
      +----------+   (& Optional Refresh Token)   |                |
            v                                     |                |
            :                                     |                |
           (C) User Code & Verification URI       |                |
            :                                     |                |
            v                                     |                |
      +----------+                                |                |
      | End User |                                |                |
      |    at    |<---(D)-- End user reviews  --->|                |
      |  Browser |          authorization request |                |
      +----------+                                +----------------+

                    Figure 1: Device Authorization Flow

   The device authorization flow illustrated in Figure 1 includes the
   following steps:

   (A)  The client requests access from the authorization server and
        includes its client identifier in the request.

   (B)  The authorization server issues a device code and an end-user
        code and provides the end-user verification URI.

   (C)  The client instructs the end user to use a user agent on another
        device and visit the provided end-user verification URI.  The
        client provides the user with the end-user code to enter in
        order to review the authorization request.

Device Code Flow這個與前面幾個特別不一樣。在之前,以往都是從登入開始,然後跳轉頁面回到App(Client)。也就是通常先有的是前端通訊,然後才是後端通信。

May 16, 2022

【用Keycloak學習身份驗證與授權18】PKCE

                                                 +-------------------+
                                                 |   Authz Server    |
       +--------+                                | +---------------+ |
       |        |--(A)- Authorization Request ---->|               | |
       |        |       + t(code_verifier), t_m  | | Authorization | |
       |        |                                | |    Endpoint   | |
       |        |<-(B)---- Authorization Code -----|               | |
       |        |                                | +---------------+ |
       | Client |                                |                   |
       |        |                                | +---------------+ |
       |        |--(C)-- Access Token Request ---->|               | |
       |        |          + code_verifier       | |    Token      | |
       |        |                                | |   Endpoint    | |
       |        |<-(D)------ Access Token ---------|               | |
       +--------+                                | +---------------+ |
                                                 +-------------------+
 
                     Figure 2: Abstract Protocol Flow

PKCE模式

說穿了PKCE是基於Code flow的安全強化版。在整個過程前後添加了兩個動作–產生code_verifier和code_challenge,並在最後透過code_challenge驗證code_verifier。其目的有很大程度是為了建立前端通訊與後端通訊的關聯。

原先風險

那麼先來看看原本發生了什麼問題。

May 16, 2022

【用Keycloak學習身份驗證與授權17】Client Credentials

     +---------+                                  +---------------+
     |         |                                  |               |
     |         |>--(A)- Client Authentication --->| Authorization |
     | Client  |                                  |     Server    |
     |         |<--(B)---- Access Token ---------<|               |
     |         |                                  |               |
     +---------+                                  +---------------+

                     Figure 6: Client Credentials Flow

嘗試 Client Credentials flow

Client Credentials,這個模式有點特別。除了前面看到的它可能與其他模式並用以外,最特別的是,單純使用它,完全不需要資源擁有者參予。總之先來看看:

你可以使用RESTfer嘗試看看:

grant_type: client_credentials client_id: oauth_tools client_secret: <之前所產生的secret>


或是同樣可以透過OAuth.Tools嘗試看看。

  • ««
  • «
  • 1
  • 2
  • 3
  •  … 
  • 8
  • 9
  • 10
  •  … 
  • 34
  • »
  • »»
© 又LAG隨性筆記 2025