oauth2和jwt_使用具有OAuth2的Web应用程序和JWT的使用来调用API – WSO2 API Manager
oauth2和jwt
在這篇文章中,我將分享我在WSO2 API管理器(API-M)中針對行業(yè)中非常常見且有用的場景的經(jīng)驗和理解。
簡要地說明以下流程。
公開了一個API,供應用程序開發(fā)人員在API管理器的控制下使用(這增加了對該API的訪問控制)。 然后,應用程序開發(fā)人員使他們的應用程序使用這些API。 開發(fā)和測試完成后,他們會將其提供給App Store的最終用戶。 然后,最終用戶可以在商店中注冊并使用自己的憑據(jù)使用這些應用程序。 該應用程序?qū)⑻峁┧璧姆?#xff0c;以調(diào)用其已訂閱的API。
以上情形在WSO2 API-M中得到了很好的演示,文檔[1]中解釋了Pizza hacks示例。
為了清楚起見,我將簡要介紹這些步驟。 有關(guān)詳細步驟,請參閱[1]中的文檔。
API開發(fā)人員角色
- 我們在WSO2-應用程序服務器或任何其他所需的應用程序服務器中部署與“比薩餅訂購”相關(guān)的后端服務。 (從API-M示例svn下載代碼,使用Maven3進行構(gòu)建并將其部署在WSO2 AS中。如果檢查WADL,則可以檢查其公開的資源。請注意端點URL。)
 
- 然后,我們將這些服務作為API在WSO2 API-M Publisher中發(fā)布,以便它們將在API-M Store中可用(登錄到API-M Publisher,默認包為https:// localhost:9443 / publisher,并將API發(fā)布為在示例文檔中進行了指導。我們應確保生產(chǎn)端點URL與第一步中觀察到的相匹配)。
 
應用開發(fā)人員角色
- 現(xiàn)在出現(xiàn)了一位應用程序開發(fā)人員,他希望開發(fā)一個用于訂購Pizza的應用程序。 他/她可以在商店中注冊此應用,并訂閱這些應用開發(fā)所需的API。 因此,此APP開發(fā)人員將使用以前的開發(fā)人員發(fā)布的API公開的服務。 比薩訂購示例Web應用程序的代碼也可以從svn下載。
 
- 在訂閱時,他/她會獲得消費者秘密和消費者密鑰,然后將其用于請求OAuth令牌以訪問API(在此示例中,我們使用授予類型“ password”中要求的用戶名和密碼。還有其他幾種可能的授予類型同樣,如果我們不想發(fā)送密碼)。
 
從“我的訂閱”中獲取消費者密鑰和機密。
- 開發(fā)人員將消費者密鑰和消費者秘密嵌入到Pizza訂購應用程序中(在大多數(shù)情況下,在web.xml中)。
 
此時,我們可以使用以下簡單的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"}]由于我們已經(jīng)看到了訪問令牌,因此可以在這里使用它。 但是,當最終用戶來訂購披薩時,他/她就不會看到這些披薩。 此外,此令牌還與USER_TYPE:APPLICATION相關(guān),APPLICATION具有比最終用戶更多的特權(quán),因此我們無論如何不能讓用戶使用它。 因此,使用嵌入的消費者密鑰/秘密和最終用戶輸入的憑據(jù)(如果使用了密碼授予類型)為最終用戶生成了一個單獨的令牌,該憑據(jù)將與USER_TYPE:APPLICATION_USER相關(guān)。
最終用戶
因此,這是在App Store中注冊的最終用戶。
然后,最終用戶可以使用該應用程序在線訂購披薩,在http:// localhost / pizzashack的應用程序中輸入其憑據(jù)。
位于中間的API-M在此場景中充當授權(quán)服務器,管理公開API的使用。
那么JWT斷言在哪里起作用?
JWT斷言是一種用于發(fā)送調(diào)用API的最終用戶的詳細信息的格式。 就像SAML斷言攜帶用戶聲明一樣,JWT也以JSON表示符攜帶用戶聲明。 我們可以在[2]上找到更多詳細信息。 這用于將這些詳細信息傳遞到后端服務,這可能需要它們進行監(jiān)視或其他目的。 默認的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" }干杯!
資源:
翻譯自: https://www.javacodegeeks.com/2014/02/invoking-apis-using-a-web-app-with-oauth2-and-use-of-jwt-wso2-api-manager.html
oauth2和jwt
總結(jié)
以上是生活随笔為你收集整理的oauth2和jwt_使用具有OAuth2的Web应用程序和JWT的使用来调用API – WSO2 API Manager的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 罗技鼠标驱动打不开怎么办 罗技鼠标驱动打
 - 下一篇: J2Pay –完整示例