-
Notifications
You must be signed in to change notification settings - Fork 204
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
AT POP for Public Client based on broker (#511)
* AT POP for Public Client based on broker Pop test case * Use token source during e2e tests * WIP: unsuccessful e2e test for POP SHR
- Loading branch information
Showing
6 changed files
with
283 additions
and
38 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
try: | ||
from urllib.parse import urlparse | ||
except ImportError: # Fall back to Python 2 | ||
from urlparse import urlparse | ||
|
||
# We may support more auth schemes in the future | ||
class PopAuthScheme(object): | ||
HTTP_GET = "GET" | ||
HTTP_POST = "POST" | ||
HTTP_PUT = "PUT" | ||
HTTP_DELETE = "DELETE" | ||
HTTP_PATCH = "PATCH" | ||
_HTTP_METHODS = (HTTP_GET, HTTP_POST, HTTP_PUT, HTTP_DELETE, HTTP_PATCH) | ||
# Internal design: https://identitydivision.visualstudio.com/DevEx/_git/AuthLibrariesApiReview?path=/PoPTokensProtocol/PopTokensProtocol.md | ||
def __init__(self, http_method=None, url=None, nonce=None): | ||
"""Create an auth scheme which is needed to obtain a Proof-of-Possession token. | ||
:param str http_method: | ||
Its value is an uppercase http verb, such as "GET" and "POST". | ||
:param str url: | ||
The url to be signed. | ||
:param str nonce: | ||
The nonce came from resource's challenge. | ||
""" | ||
if not (http_method and url and nonce): | ||
# In the future, we may also support accepting an http_response as input | ||
raise ValueError("All http_method, url and nonce are required parameters") | ||
if http_method not in self._HTTP_METHODS: | ||
raise ValueError("http_method must be uppercase, according to " | ||
"https://datatracker.ietf.org/doc/html/draft-ietf-oauth-signed-http-request-03#section-3") | ||
self._http_method = http_method | ||
self._url = urlparse(url) | ||
self._nonce = nonce | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.