1
+
2
+
3
+ <!DOCTYPE html>
4
+ < html class ="writer-html5 " lang ="en " >
5
+ < head >
6
+ < meta charset ="utf-8 " />
7
+
8
+ < meta name ="viewport " content ="width=device-width, initial-scale=1.0 " />
9
+
10
+ < title > ibmcloud_python_sdk.auth — IBM Cloud Python SDK 1.0.0 documentation</ title >
11
+
12
+
13
+
14
+ < link rel ="stylesheet " href ="../../_static/css/theme.css " type ="text/css " />
15
+ < link rel ="stylesheet " href ="../../_static/pygments.css " type ="text/css " />
16
+ < link rel ="stylesheet " href ="../../_static/pygments.css " type ="text/css " />
17
+ < link rel ="stylesheet " href ="../../_static/css/theme.css " type ="text/css " />
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+ <!--[if lt IE 9]>
29
+ <script src="../../_static/js/html5shiv.min.js"></script>
30
+ <![endif]-->
31
+
32
+
33
+ < script type ="text/javascript " id ="documentation_options " data-url_root ="../../ " src ="../../_static/documentation_options.js "> </ script >
34
+ < script data-url_root ="../../ " id ="documentation_options " src ="../../_static/documentation_options.js "> </ script >
35
+ < script src ="../../_static/jquery.js "> </ script >
36
+ < script src ="../../_static/underscore.js "> </ script >
37
+ < script src ="../../_static/doctools.js "> </ script >
38
+
39
+ < script type ="text/javascript " src ="../../_static/js/theme.js "> </ script >
40
+
41
+
42
+ < link rel ="index " title ="Index " href ="../../genindex.html " />
43
+ < link rel ="search " title ="Search " href ="../../search.html " />
44
+ </ head >
45
+
46
+ < body class ="wy-body-for-nav ">
47
+
48
+
49
+ < div class ="wy-grid-for-nav ">
50
+
51
+ < nav data-toggle ="wy-nav-shift " class ="wy-nav-side ">
52
+ < div class ="wy-side-scroll ">
53
+ < div class ="wy-side-nav-search " >
54
+
55
+
56
+
57
+ < a href ="../../index.html " class ="icon icon-home "> IBM Cloud Python SDK
58
+
59
+
60
+
61
+ </ a >
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+ < div role ="search ">
70
+ < form id ="rtd-search-form " class ="wy-form " action ="../../search.html " method ="get ">
71
+ < input type ="text " name ="q " placeholder ="Search docs " />
72
+ < input type ="hidden " name ="check_keywords " value ="yes " />
73
+ < input type ="hidden " name ="area " value ="default " />
74
+ </ form >
75
+ </ div >
76
+
77
+
78
+ </ div >
79
+
80
+
81
+ < div class ="wy-menu wy-menu-vertical " data-spy ="affix " role ="navigation " aria-label ="main navigation ">
82
+
83
+
84
+
85
+
86
+
87
+
88
+ < p class ="caption "> < span class ="caption-text "> Contents:</ span > </ p >
89
+ < ul >
90
+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../modules.html "> ibmcloud_python_sdk</ a > </ li >
91
+ </ ul >
92
+
93
+
94
+
95
+ </ div >
96
+
97
+ </ div >
98
+ </ nav >
99
+
100
+ < section data-toggle ="wy-nav-shift " class ="wy-nav-content-wrap ">
101
+
102
+
103
+ < nav class ="wy-nav-top " aria-label ="top navigation ">
104
+
105
+ < i data-toggle ="wy-nav-top " class ="fa fa-bars "> </ i >
106
+ < a href ="../../index.html "> IBM Cloud Python SDK</ a >
107
+
108
+ </ nav >
109
+
110
+
111
+ < div class ="wy-nav-content ">
112
+
113
+ < div class ="rst-content ">
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+
133
+ < div role ="navigation " aria-label ="breadcrumbs navigation ">
134
+
135
+ < ul class ="wy-breadcrumbs ">
136
+
137
+ < li > < a href ="../../index.html " class ="icon icon-home "> </ a > »</ li >
138
+
139
+ < li > < a href ="../index.html "> Module code</ a > »</ li >
140
+
141
+ < li > ibmcloud_python_sdk.auth</ li >
142
+
143
+
144
+ < li class ="wy-breadcrumbs-aside ">
145
+
146
+ </ li >
147
+
148
+ </ ul >
149
+
150
+
151
+ < hr />
152
+ </ div >
153
+ < div role ="main " class ="document " itemscope ="itemscope " itemtype ="http://schema.org/Article ">
154
+ < div itemprop ="articleBody ">
155
+
156
+ < h1 > Source code for ibmcloud_python_sdk.auth</ h1 > < div class ="highlight "> < pre >
157
+ < span > </ span > < span class ="kn "> from</ span > < span class ="nn "> ibmcloud_python_sdk.utils</ span > < span class ="kn "> import</ span > < span class ="n "> constants</ span >
158
+ < span class ="kn "> from</ span > < span class ="nn "> ibmcloud_python_sdk.config</ span > < span class ="kn "> import</ span > < span class ="n "> params</ span >
159
+ < span class ="kn "> from</ span > < span class ="nn "> ibmcloud_python_sdk.utils</ span > < span class ="kn "> import</ span > < span class ="n "> common</ span >
160
+ < span class ="kn "> from</ span > < span class ="nn "> jwt</ span > < span class ="kn "> import</ span > < span class ="n "> decode</ span >
161
+
162
+ < span class ="n "> cfg</ span > < span class ="o "> =</ span > < span class ="n "> params</ span > < span class ="p "> ()</ span >
163
+ < span class ="n "> headers</ span > < span class ="o "> =</ span > < span class ="p "> {}</ span >
164
+
165
+
166
+ < div class ="viewcode-block " id ="decode_token "> < a class ="viewcode-back " href ="../../ibmcloud_python_sdk.html#ibmcloud_python_sdk.auth.decode_token "> [docs]</ a > < span class ="k "> def</ span > < span class ="nf "> decode_token</ span > < span class ="p "> ():</ span >
167
+ < span class ="sd "> """Decode JWT token</ span >
168
+
169
+ < span class ="sd "> :return: JSON JWT information</ span >
170
+ < span class ="sd "> :rtype: dict</ span >
171
+ < span class ="sd "> """</ span >
172
+ < span class ="k "> try</ span > < span class ="p "> :</ span >
173
+ < span class ="n "> token</ span > < span class ="o "> =</ span > < span class ="n "> get_headers</ span > < span class ="p "> ()[</ span > < span class ="s2 "> "Authorization"</ span > < span class ="p "> ]</ span >
174
+ < span class ="k "> return</ span > < span class ="n "> decode</ span > < span class ="p "> (</ span > < span class ="n "> token</ span > < span class ="o "> .</ span > < span class ="n "> split</ span > < span class ="p "> (</ span > < span class ="s2 "> " "</ span > < span class ="p "> )[</ span > < span class ="mi "> 1</ span > < span class ="p "> ],</ span > < span class ="n "> verify</ span > < span class ="o "> =</ span > < span class ="kc "> False</ span > < span class ="p "> )</ span >
175
+
176
+ < span class ="k "> except</ span > < span class ="ne "> Exception</ span > < span class ="k "> as</ span > < span class ="n "> error</ span > < span class ="p "> :</ span >
177
+ < span class ="nb "> print</ span > < span class ="p "> (</ span > < span class ="s2 "> "Error decoding token. </ span > < span class ="si "> {}</ span > < span class ="s2 "> "</ span > < span class ="o "> .</ span > < span class ="n "> format</ span > < span class ="p "> (</ span > < span class ="n "> error</ span > < span class ="p "> ))</ span >
178
+ < span class ="k "> raise</ span > </ div >
179
+
180
+
181
+ < div class ="viewcode-block " id ="get_token "> < a class ="viewcode-back " href ="../../ibmcloud_python_sdk.html#ibmcloud_python_sdk.auth.get_token "> [docs]</ a > < span class ="k "> def</ span > < span class ="nf "> get_token</ span > < span class ="p "> (</ span > < span class ="n "> url</ span > < span class ="p "> ,</ span > < span class ="n "> key</ span > < span class ="p "> ):</ span >
182
+ < span class ="sd "> """Generate JWT IAM token</ span >
183
+
184
+ < span class ="sd "> :param url: IAM URL</ span >
185
+ < span class ="sd "> :type url: string</ span >
186
+ < span class ="sd "> :param key: API Key</ span >
187
+ < span class ="sd "> :type key: string</ span >
188
+ < span class ="sd "> :return: IAM token</ span >
189
+ < span class ="sd "> :rtype: string</ span >
190
+ < span class ="sd "> """</ span >
191
+ < span class ="c1 "> # Payload for retrieving token</ span >
192
+ < span class ="n "> payload</ span > < span class ="o "> =</ span > < span class ="p "> (</ span > < span class ="s2 "> "grant_type=urn:ibm:params:oauth:grant-type:"</ span >
193
+ < span class ="s2 "> "apikey&apikey=</ span > < span class ="si "> {}</ span > < span class ="s2 "> "</ span > < span class ="o "> .</ span > < span class ="n "> format</ span > < span class ="p "> (</ span > < span class ="n "> key</ span > < span class ="p "> ))</ span >
194
+
195
+ < span class ="c1 "> # Required headers</ span >
196
+ < span class ="n "> headers_auth</ span > < span class ="o "> =</ span > < span class ="p "> {</ span >
197
+ < span class ="s1 "> 'Content-Type'</ span > < span class ="p "> :</ span > < span class ="s1 "> 'application/x-www-form-urlencoded'</ span > < span class ="p "> ,</ span >
198
+ < span class ="s1 "> 'Accept'</ span > < span class ="p "> :</ span > < span class ="s1 "> 'application/json'</ span > < span class ="p "> ,</ span >
199
+ < span class ="p "> }</ span >
200
+
201
+ < span class ="k "> try</ span > < span class ="p "> :</ span >
202
+ < span class ="c1 "> # Retrieve data</ span >
203
+ < span class ="n "> data</ span > < span class ="o "> =</ span > < span class ="n "> common</ span > < span class ="o "> .</ span > < span class ="n "> query_wrapper</ span > < span class ="p "> (</ span > < span class ="s2 "> "auth"</ span > < span class ="p "> ,</ span > < span class ="s2 "> "POST"</ span > < span class ="p "> ,</ span > < span class ="s2 "> "/identity/token"</ span > < span class ="p "> ,</ span >
204
+ < span class ="n "> headers_auth</ span > < span class ="p "> ,</ span > < span class ="n "> payload</ span > < span class ="p "> )[</ span > < span class ="s2 "> "data"</ span > < span class ="p "> ]</ span >
205
+
206
+ < span class ="c1 "> # Concatenate token type and token value</ span >
207
+ < span class ="k "> return</ span > < span class ="n "> data</ span > < span class ="p "> [</ span > < span class ="s1 "> 'token_type'</ span > < span class ="p "> ]</ span > < span class ="o "> +</ span > < span class ="s1 "> ' '</ span > < span class ="o "> +</ span > < span class ="n "> data</ span > < span class ="p "> [</ span > < span class ="s1 "> 'access_token'</ span > < span class ="p "> ]</ span >
208
+
209
+ < span class ="c1 "> # If an error happens while retrieving token</ span >
210
+ < span class ="k "> except</ span > < span class ="ne "> Exception</ span > < span class ="k "> as</ span > < span class ="n "> error</ span > < span class ="p "> :</ span >
211
+ < span class ="nb "> print</ span > < span class ="p "> (</ span > < span class ="s2 "> "Error getting token. </ span > < span class ="si "> {}</ span > < span class ="s2 "> "</ span > < span class ="o "> .</ span > < span class ="n "> format</ span > < span class ="p "> (</ span > < span class ="n "> error</ span > < span class ="p "> ))</ span >
212
+ < span class ="k "> raise</ span > </ div >
213
+
214
+
215
+ < div class ="viewcode-block " id ="get_headers "> < a class ="viewcode-back " href ="../../ibmcloud_python_sdk.html#ibmcloud_python_sdk.auth.get_headers "> [docs]</ a > < span class ="k "> def</ span > < span class ="nf "> get_headers</ span > < span class ="p "> ():</ span >
216
+ < span class ="sd "> """Generates the headers used for authenticated HTTP request.</ span >
217
+
218
+ < span class ="sd "> :return: Dict of headers</ span >
219
+ < span class ="sd "> :rtype: dict</ span >
220
+ < span class ="sd "> """</ span >
221
+ < span class ="k "> if</ span > < span class ="ow "> not</ span > < span class ="n "> headers</ span > < span class ="p "> :</ span >
222
+ < span class ="n "> headers</ span > < span class ="p "> [</ span > < span class ="s2 "> "Content-Type"</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="s2 "> "application/json"</ span >
223
+ < span class ="n "> headers</ span > < span class ="p "> [</ span > < span class ="s2 "> "Accept"</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="s2 "> "application/json"</ span >
224
+ < span class ="n "> headers</ span > < span class ="p "> [</ span > < span class ="s2 "> "User-Agent"</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="n "> constants</ span > < span class ="o "> .</ span > < span class ="n "> USER_AGENT</ span >
225
+ < span class ="n "> headers</ span > < span class ="p "> [</ span > < span class ="s2 "> "Authorization"</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="n "> get_token</ span > < span class ="p "> (</ span > < span class ="n "> constants</ span > < span class ="o "> .</ span > < span class ="n "> AUTH_URL</ span > < span class ="p "> ,</ span > < span class ="n "> cfg</ span > < span class ="p "> [</ span > < span class ="s2 "> "key"</ span > < span class ="p "> ])</ span >
226
+
227
+ < span class ="k "> return</ span > < span class ="n "> headers</ span >
228
+
229
+ < span class ="k "> return</ span > < span class ="n "> headers</ span > </ div >
230
+ </ pre > </ div >
231
+
232
+ </ div >
233
+
234
+ </ div >
235
+ < footer >
236
+
237
+ < hr />
238
+
239
+ < div role ="contentinfo ">
240
+ < p >
241
+ © Copyright 2021, Gaëtan Trellu (goldyfruit) & James Régis.
242
+
243
+ </ p >
244
+ </ div >
245
+
246
+
247
+
248
+ Built with < a href ="https://www.sphinx-doc.org/ "> Sphinx</ a > using a
249
+
250
+ < a href ="https://github.com/readthedocs/sphinx_rtd_theme "> theme</ a >
251
+
252
+ provided by < a href ="https://readthedocs.org "> Read the Docs</ a > .
253
+
254
+ </ footer >
255
+ </ div >
256
+ </ div >
257
+
258
+ </ section >
259
+
260
+ </ div >
261
+
262
+
263
+ < script type ="text/javascript ">
264
+ jQuery ( function ( ) {
265
+ SphinxRtdTheme . Navigation . enable ( true ) ;
266
+ } ) ;
267
+ </ script >
268
+
269
+
270
+
271
+
272
+
273
+
274
+ </ body >
275
+ </ html >
0 commit comments