日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oauth2和jwt_使用具有OAuth2的Web应用程序和JWT的使用来调用API – WSO2 API Manager

發布時間:2023/12/3 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oauth2和jwt_使用具有OAuth2的Web应用程序和JWT的使用来调用API – WSO2 API Manager 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

oauth2和jwt

在這篇文章中,我將分享我在WSO2 API管理器(API-M)中針對行業中非常常見且有用的場景的經驗和理解。

簡要地說明以下流程。

公開了一個API,供應用程序開發人員在API管理器的控制下使用(這增加了對該API的訪問控制)。 然后,應用程序開發人員使他們的應用程序使用這些API。 開發和測試完成后,他們會將其提供給App Store的最終用戶。 然后,最終用戶可以在商店中注冊并使用自己的憑據使用這些應用程序。 該應用程序將提供所需的服務,以調用其已訂閱的API。

以上情形在WSO2 API-M中得到了很好的演示,文檔[1]中解釋了Pizza hacks示例。

為了清楚起見,我將簡要介紹這些步驟。 有關詳細步驟,請參閱[1]中的文檔。

API開發人員角色

  • 我們在WSO2-應用程序服務器或任何其他所需的應用程序服務器中部署與“比薩餅訂購”相關的后端服務。 (從API-M示例svn下載代碼,使用Maven3進行構建并將其部署在WSO2 AS中。如果檢查WADL,則可以檢查其公開的資源。請注意端點URL。)

  • 然后,我們將這些服務作為API在WSO2 API-M Publisher中發布,以便它們將在API-M Store中可用(登錄到API-M Publisher,默認包為https:// localhost:9443 / publisher,并將API發布為在示例文檔中進行了指導。我們應確保生產端點URL與第一步中觀察到的相匹配)。

應用開發人員角色

  • 現在出現了一位應用程序開發人員,他希望開發一個用于訂購Pizza的應用程序。 他/她可以在商店中注冊此應用,并訂閱這些應用開發所需的API。 因此,此APP開發人員將使用以前的開發人員發布的API公開的服務。 比薩訂購示例Web應用程序的代碼也可以從svn下載。

  • 在訂閱時,他/她會獲得消費者秘密和消費者密鑰,然后將其用于請求OAuth令牌以訪問API(在此示例中,我們使用授予類型“ password”中要求的用戶名和密碼。還有其他幾種可能的授予類型同樣,如果我們不想發送密碼)。

從“我的訂閱”中獲取消費者密鑰和機密。

  • 開發人員將消費者密鑰和消費者秘密嵌入到Pizza訂購應用程序中(在大多數情況下,在web.xml中)。
<context-param><param-name>consumerKey</param-name><param-value>FyfSK4RNHqGETmnNkaI87hIoNFQa</param-value></context-param><context-param><param-name>consumerSecret</param-name><param-value>1NFr7jb8JBA3IFa6gkjoN_PoYAca</param-value></context-param>

此時,我們可以使用以下簡單的curl命令檢查令牌的工作方式。 提供從上面的UI獲取的訪問令牌。

curl -k -H "Authorization: Bearer <access_token>" https://localhost:8245/pizzashack/menu/1.0.0

這將返回比薩餅的菜單詳細信息,如下所示:

[{"price":"13.99","icon":"/images/6.png","description":"Grilled white chicken, hickory-smoked bacon and fresh sliced onions in barbeque sauce","name":"BBQ Chicken Bacon"},{"price":"24.99","icon":"......................:"/images/5.png","description":"Rich and creamy blend of spinach and garlic Parmesan with Alfredo sauce","name":"Spinach Alfredo"},{"price":"15.99","icon":"/images/4.png","description":"Six cheese blend of mozzarella, Parmesan, Romano, Asiago and Fontina","name":"Tuscan Six Cheese"}]

由于我們已經看到了訪問令牌,因此可以在這里使用它。 但是,當最終用戶來訂購披薩時,他/她就不會看到這些披薩。 此外,此令牌還與USER_TYPE:APPLICATION相關,APPLICATION具有比最終用戶更多的特權,因此我們無論如何不能讓用戶使用它。 因此,使用嵌入的消費者密鑰/秘密和最終用戶輸入的憑據(如果使用了密碼授予類型)為最終用戶生成了一個單獨的令牌,該憑據將與USER_TYPE:APPLICATION_USER相關。

最終用戶

因此,這是在App Store中注冊的最終用戶。

然后,最終用戶可以使用該應用程序在線訂購披薩,在http:// localhost / pizzashack的應用程序中輸入其憑據。

位于中間的API-M在此場景中充當授權服務器,管理公開API的使用。

那么JWT斷言在哪里起作用?

JWT斷言是一種用于發送調用API的最終用戶的詳細信息的格式。 就像SAML斷言攜帶用戶聲明一樣,JWT也以JSON表示符攜帶用戶聲明。 我們可以在[2]上找到更多詳細信息。 這用于將這些詳細信息傳遞到后端服務,這可能需要它們進行監視或其他目的。 默認的JWT令牌如下。

{"iss":"wso2.org/products/am","exp":1391029971429,"http://wso2.org/claims/subscriber":"admin","http://wso2.org/claims/applicationid":"1","http://wso2.org/claims/applicationname":"DefaultApplication","http://wso2.org/claims/applicationtier":"Unlimited","http://wso2.org/claims/apicontext":"/pizzashack/menu","http://wso2.org/claims/version":"1.0.0","http://wso2.org/claims/tier":"Bronze","http://wso2.org/claims/keytype":"PRODUCTION","http://wso2.org/claims/usertype":"APPLICATION","http://wso2.org/claims/enduser":"admin","http://wso2.org/claims/enduserTenantId":"-1234" }

干杯!

資源:

  • http://docs.wso2.org/display/AM150/Invoking+APIs+using+a+Web+App+Deployed+in+WSO2+AS
  • http://lalajisureshika.blogspot.com/2013/06/passing-end-user-details-from-client-to.html
  • http://asanka.abeysinghe.org/2014/01/oauth-for-application-developer-and.html
  • 參考: 使用我們的JCG合作伙伴 Pushpalanka(位于Pushpalanka的Blog博客) 使用帶有OAuth2的Web應用程序調用API,并使用JWT – WSO2 API Manager 。

    翻譯自: https://www.javacodegeeks.com/2014/02/invoking-apis-using-a-web-app-with-oauth2-and-use-of-jwt-wso2-api-manager.html

    oauth2和jwt

    總結

    以上是生活随笔為你收集整理的oauth2和jwt_使用具有OAuth2的Web应用程序和JWT的使用来调用API – WSO2 API Manager的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。