Skip to content

Commit bd2b479

Browse files
authored
IAM assume role auth (#104)
* Added IAM Role authorization * Updated readme with AssumeRole example
1 parent 9ff59ce commit bd2b479

File tree

108 files changed

+1232
-172
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

108 files changed

+1232
-172
lines changed

README.md

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ Version 1.0 is not going to be updated anymore, please migrate to version 2.0 th
8282
In order to start using SP API you need to first register as a Developer and create application.
8383
Whole process is described in [Amazon Official Guides](https://github.com/amzn/selling-partner-api-docs/blob/main/guides/en-US/developer-guide/SellingPartnerApiDeveloperGuide.md).
8484

85-
Normally amazon recommends to use Role IAM when creating application however this requires and additional
86-
API call when obtaining refresh token. It's easier to use User IAM and just make sure that the user
85+
Amazon recommends to use Role IAM when creating application however this requires and additional
86+
API request in order to obtain access token. It's easier to use User IAM and just make sure that the user
8787
has following Inline Policy
8888

8989
```
@@ -109,6 +109,11 @@ Example of changing refresh token into access token.
109109
use AmazonPHP\SellingPartner\OAuth;
110110
use AmazonPHP\SellingPartner\Configuration;
111111
use AmazonPHP\SellingPartner\HttpFactory;
112+
use Buzz\Client\Curl;
113+
use Nyholm\Psr7\Factory\Psr17Factory;
114+
115+
$factory = new Psr17Factory();
116+
$client = new Curl($factory);
112117
113118
$oauth = new OAuth(
114119
$client,
@@ -126,7 +131,41 @@ $accessToken = $oauth->exchangeRefreshToken('seller_oauth_refresh_token');
126131

127132
#### IAM Role
128133

129-
@TODO
134+
```
135+
<?php
136+
137+
use AmazonPHP\SellingPartner\OAuth;
138+
use AmazonPHP\SellingPartner\Configuration;
139+
use AmazonPHP\SellingPartner\HttpFactory;
140+
use Buzz\Client\Curl;
141+
use Nyholm\Psr7\Factory\Psr17Factory;
142+
143+
$factory = new Psr17Factory();
144+
$client = new Curl($factory);
145+
146+
$sts = new STSClient(
147+
$client,
148+
$requestFactory = $factory,
149+
$streamFactory = $factory
150+
);
151+
152+
$oauth = new OAuth(
153+
$client,
154+
$httpFactory = new HttpFactory($requestFactory, $streamFactory),
155+
$config = Configuration::forIAMRole(
156+
'lwaClientID',
157+
'lwaClientID',
158+
$sts->assumeRole(
159+
'awsAccessKey',
160+
'awsSecretKey',
161+
'arn:aws:iam::.........'
162+
)
163+
)
164+
);
165+
166+
$accessToken = $oauth->exchangeRefreshToken('seller_oauth_refresh_token');
167+
```
168+
130169

131170
### Development
132171

resources/php-amazon-selling-partner-api/api.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,7 @@ final {{#operations}}class {{packageName}}SDK
404404
$request = $request->withHeader($name, $header);
405405
}
406406

407-
return HttpSignatureHeaders::forIAMUser(
407+
return HttpSignatureHeaders::forConfig(
408408
$this->configuration,
409409
$accessToken,
410410
$region,
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
class {{classname}}
2+
{
3+
/**
4+
* Possible values of this enum
5+
*/
6+
{{#allowableValues}}
7+
{{#enumVars}}
8+
const {{{name}}} = {{{value}}};
9+
10+
{{/enumVars}}
11+
{{/allowableValues}}
12+
private string $value;
13+
14+
/**
15+
* Gets allowable values of the enum
16+
* @return string[]
17+
*/
18+
public static function getAllowableEnumValues()
19+
{
20+
return [
21+
{{#allowableValues}}
22+
{{#enumVars}}
23+
self::{{{name}}}{{^-last}},
24+
{{/-last}}
25+
{{/enumVars}}
26+
{{/allowableValues}}
27+
28+
];
29+
}
30+
31+
public function __construct(string $value)
32+
{
33+
$this->value = $value;
34+
}
35+
36+
public function toString(): string
37+
{
38+
return $this->value;
39+
}
40+
}

src/AmazonPHP/SellingPartner/Api/AplusContentApi/APlusSDK.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ public function createContentDocumentRequest(AccessToken $accessToken, string $r
279279
$request = $request->withHeader($name, $header);
280280
}
281281

282-
return HttpSignatureHeaders::forIAMUser(
282+
return HttpSignatureHeaders::forConfig(
283283
$this->configuration,
284284
$accessToken,
285285
$region,
@@ -514,7 +514,7 @@ public function getContentDocumentRequest(AccessToken $accessToken, string $regi
514514
$request = $request->withHeader($name, $header);
515515
}
516516

517-
return HttpSignatureHeaders::forIAMUser(
517+
return HttpSignatureHeaders::forConfig(
518518
$this->configuration,
519519
$accessToken,
520520
$region,
@@ -766,7 +766,7 @@ public function listContentDocumentAsinRelationsRequest(AccessToken $accessToken
766766
$request = $request->withHeader($name, $header);
767767
}
768768

769-
return HttpSignatureHeaders::forIAMUser(
769+
return HttpSignatureHeaders::forConfig(
770770
$this->configuration,
771771
$accessToken,
772772
$region,
@@ -980,7 +980,7 @@ public function postContentDocumentApprovalSubmissionRequest(AccessToken $access
980980
$request = $request->withHeader($name, $header);
981981
}
982982

983-
return HttpSignatureHeaders::forIAMUser(
983+
return HttpSignatureHeaders::forConfig(
984984
$this->configuration,
985985
$accessToken,
986986
$region,
@@ -1211,7 +1211,7 @@ public function postContentDocumentAsinRelationsRequest(AccessToken $accessToken
12111211
$request = $request->withHeader($name, $header);
12121212
}
12131213

1214-
return HttpSignatureHeaders::forIAMUser(
1214+
return HttpSignatureHeaders::forConfig(
12151215
$this->configuration,
12161216
$accessToken,
12171217
$region,
@@ -1425,7 +1425,7 @@ public function postContentDocumentSuspendSubmissionRequest(AccessToken $accessT
14251425
$request = $request->withHeader($name, $header);
14261426
}
14271427

1428-
return HttpSignatureHeaders::forIAMUser(
1428+
return HttpSignatureHeaders::forConfig(
14291429
$this->configuration,
14301430
$accessToken,
14311431
$region,
@@ -1631,7 +1631,7 @@ public function searchContentDocumentsRequest(AccessToken $accessToken, string $
16311631
$request = $request->withHeader($name, $header);
16321632
}
16331633

1634-
return HttpSignatureHeaders::forIAMUser(
1634+
return HttpSignatureHeaders::forConfig(
16351635
$this->configuration,
16361636
$accessToken,
16371637
$region,
@@ -1858,7 +1858,7 @@ public function searchContentPublishRecordsRequest(AccessToken $accessToken, str
18581858
$request = $request->withHeader($name, $header);
18591859
}
18601860

1861-
return HttpSignatureHeaders::forIAMUser(
1861+
return HttpSignatureHeaders::forConfig(
18621862
$this->configuration,
18631863
$accessToken,
18641864
$region,
@@ -2089,7 +2089,7 @@ public function updateContentDocumentRequest(AccessToken $accessToken, string $r
20892089
$request = $request->withHeader($name, $header);
20902090
}
20912091

2092-
return HttpSignatureHeaders::forIAMUser(
2092+
return HttpSignatureHeaders::forConfig(
20932093
$this->configuration,
20942094
$accessToken,
20952095
$region,
@@ -2308,7 +2308,7 @@ public function validateContentDocumentAsinRelationsRequest(AccessToken $accessT
23082308
$request = $request->withHeader($name, $header);
23092309
}
23102310

2311-
return HttpSignatureHeaders::forIAMUser(
2311+
return HttpSignatureHeaders::forConfig(
23122312
$this->configuration,
23132313
$accessToken,
23142314
$region,

src/AmazonPHP/SellingPartner/Api/AuthorizationApi/AuthorizationSDK.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ public function getAuthorizationCodeRequest(AccessToken $accessToken, string $re
256256
$request = $request->withHeader($name, $header);
257257
}
258258

259-
return HttpSignatureHeaders::forIAMUser(
259+
return HttpSignatureHeaders::forConfig(
260260
$this->configuration,
261261
$accessToken,
262262
$region,

src/AmazonPHP/SellingPartner/Api/CatalogApi/CatalogItemSDK.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ public function getCatalogItemRequest(AccessToken $accessToken, string $region,
247247
$request = $request->withHeader($name, $header);
248248
}
249249

250-
return HttpSignatureHeaders::forIAMUser(
250+
return HttpSignatureHeaders::forConfig(
251251
$this->configuration,
252252
$accessToken,
253253
$region,
@@ -455,7 +455,7 @@ public function listCatalogCategoriesRequest(AccessToken $accessToken, string $r
455455
$request = $request->withHeader($name, $header);
456456
}
457457

458-
return HttpSignatureHeaders::forIAMUser(
458+
return HttpSignatureHeaders::forConfig(
459459
$this->configuration,
460460
$accessToken,
461461
$region,
@@ -713,7 +713,7 @@ public function listCatalogItemsRequest(AccessToken $accessToken, string $region
713713
$request = $request->withHeader($name, $header);
714714
}
715715

716-
return HttpSignatureHeaders::forIAMUser(
716+
return HttpSignatureHeaders::forConfig(
717717
$this->configuration,
718718
$accessToken,
719719
$region,

src/AmazonPHP/SellingPartner/Api/CustomerInvoicesApi/VendorDirectFulfillmentShippingSDK.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ public function getCustomerInvoiceRequest(AccessToken $accessToken, string $regi
230230
$request = $request->withHeader($name, $header);
231231
}
232232

233-
return HttpSignatureHeaders::forIAMUser(
233+
return HttpSignatureHeaders::forConfig(
234234
$this->configuration,
235235
$accessToken,
236236
$region,
@@ -482,7 +482,7 @@ public function getCustomerInvoicesRequest(AccessToken $accessToken, string $reg
482482
$request = $request->withHeader($name, $header);
483483
}
484484

485-
return HttpSignatureHeaders::forIAMUser(
485+
return HttpSignatureHeaders::forConfig(
486486
$this->configuration,
487487
$accessToken,
488488
$region,

src/AmazonPHP/SellingPartner/Api/DefaultApi/FinancesSDK.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ public function listFinancialEventGroupsRequest(AccessToken $accessToken, string
265265
$request = $request->withHeader($name, $header);
266266
}
267267

268-
return HttpSignatureHeaders::forIAMUser(
268+
return HttpSignatureHeaders::forConfig(
269269
$this->configuration,
270270
$accessToken,
271271
$region,
@@ -484,7 +484,7 @@ public function listFinancialEventsRequest(AccessToken $accessToken, string $reg
484484
$request = $request->withHeader($name, $header);
485485
}
486486

487-
return HttpSignatureHeaders::forIAMUser(
487+
return HttpSignatureHeaders::forConfig(
488488
$this->configuration,
489489
$accessToken,
490490
$region,
@@ -701,7 +701,7 @@ public function listFinancialEventsByGroupIdRequest(AccessToken $accessToken, st
701701
$request = $request->withHeader($name, $header);
702702
}
703703

704-
return HttpSignatureHeaders::forIAMUser(
704+
return HttpSignatureHeaders::forConfig(
705705
$this->configuration,
706706
$accessToken,
707707
$region,
@@ -918,7 +918,7 @@ public function listFinancialEventsByOrderIdRequest(AccessToken $accessToken, st
918918
$request = $request->withHeader($name, $header);
919919
}
920920

921-
return HttpSignatureHeaders::forIAMUser(
921+
return HttpSignatureHeaders::forConfig(
922922
$this->configuration,
923923
$accessToken,
924924
$region,

src/AmazonPHP/SellingPartner/Api/DefinitionsApi/ProductTypesDefinitionsSDK.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ public function getDefinitionsProductTypeRequest(AccessToken $accessToken, strin
293293
$request = $request->withHeader($name, $header);
294294
}
295295

296-
return HttpSignatureHeaders::forIAMUser(
296+
return HttpSignatureHeaders::forConfig(
297297
$this->configuration,
298298
$accessToken,
299299
$region,
@@ -491,7 +491,7 @@ public function searchDefinitionsProductTypesRequest(AccessToken $accessToken, s
491491
$request = $request->withHeader($name, $header);
492492
}
493493

494-
return HttpSignatureHeaders::forIAMUser(
494+
return HttpSignatureHeaders::forConfig(
495495
$this->configuration,
496496
$accessToken,
497497
$region,

src/AmazonPHP/SellingPartner/Api/FbaInboundApi/FBAInboundSDK.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ public function getItemEligibilityPreviewRequest(AccessToken $accessToken, strin
252252
$request = $request->withHeader($name, $header);
253253
}
254254

255-
return HttpSignatureHeaders::forIAMUser(
255+
return HttpSignatureHeaders::forConfig(
256256
$this->configuration,
257257
$accessToken,
258258
$region,

0 commit comments

Comments
 (0)