-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ONYX-26897 To reuse the token #185
base: main
Are you sure you want to change the base?
Changes from 3 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
token | ||
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -102,6 +102,7 @@ | |||||||||||||||||||||||||||||||||||||||
from ansible.module_utils.urls import open_url | ||||||||||||||||||||||||||||||||||||||||
from ansible.utils.display import Display | ||||||||||||||||||||||||||||||||||||||||
import ssl | ||||||||||||||||||||||||||||||||||||||||
from pathlib import Path | ||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This import is not used in these changes There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. done |
||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
display = Display() | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
|
@@ -176,9 +177,18 @@ def _fetch_conjur_token(conjur_url, account, username, api_key, validate_certs, | |||||||||||||||||||||||||||||||||||||||
validate_certs=validate_certs, | ||||||||||||||||||||||||||||||||||||||||
ca_path=cert_file) | ||||||||||||||||||||||||||||||||||||||||
code = response.getcode() | ||||||||||||||||||||||||||||||||||||||||
if code != 200: | ||||||||||||||||||||||||||||||||||||||||
raise AnsibleError('Failed to authenticate as \'{0}\' (got {1} response)' | ||||||||||||||||||||||||||||||||||||||||
if response.getcode() == 200: | ||||||||||||||||||||||||||||||||||||||||
display.vvvv('Conjur token was successfully retrieved and authorized with {0} code and {1} username '.format(code, username)) | ||||||||||||||||||||||||||||||||||||||||
return response.read() | ||||||||||||||||||||||||||||||||||||||||
if response.getcode() == 401: | ||||||||||||||||||||||||||||||||||||||||
raise AnsibleError('Conjur request has invalid authorization credentials as {0} and {1} response'.format(code, username)) | ||||||||||||||||||||||||||||||||||||||||
if response.getcode() == 403: | ||||||||||||||||||||||||||||||||||||||||
raise AnsibleError('The controlling host\'s Conjur identity does not have authorization as \'{0}\' (got {1} response)' | ||||||||||||||||||||||||||||||||||||||||
.format(username, code)) | ||||||||||||||||||||||||||||||||||||||||
if response.getcode() == 404: | ||||||||||||||||||||||||||||||||||||||||
raise AnsibleError('The token does not exist with {0} response '.format(code)) | ||||||||||||||||||||||||||||||||||||||||
if response.getcode() == 500: | ||||||||||||||||||||||||||||||||||||||||
raise AnsibleError('Internal Server Error with {0} response'.format(code)) | ||||||||||||||||||||||||||||||||||||||||
Comment on lines
+179
to
+190
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For the purposes of determining whether an authentication request has failed or not, I don't know if we really need to capture all these conditions, or if we need to expose them to the Ansible client.
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Shall I remove all except 200, 500 and 401 code . Please suggest . |
||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
return response.read() | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
|
@@ -335,16 +345,29 @@ def run(self, terms, variables=None, **kwargs): | |||||||||||||||||||||||||||||||||||||||
display.vvv("Using cert file path {0}".format(conf['cert_file'])) | ||||||||||||||||||||||||||||||||||||||||
cert_file = conf['cert_file'] | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
path = '../../tests/conjur_variable/plugin_token.txt' | ||||||||||||||||||||||||||||||||||||||||
isExist = os.path.exists(path) | ||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We should definitely include a default token file path, but this path is relative to some unknown sub-directory of the project's root, and points to the test directory - probably don't want to hard-code this. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Sure , I will update it . There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done |
||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
isEmpty = 0 | ||||||||||||||||||||||||||||||||||||||||
if ((isExist is True)): | ||||||||||||||||||||||||||||||||||||||||
isEmpty = os.path.getsize(path) | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
token = None | ||||||||||||||||||||||||||||||||||||||||
if 'authn_token_file' not in conf: | ||||||||||||||||||||||||||||||||||||||||
token = _fetch_conjur_token( | ||||||||||||||||||||||||||||||||||||||||
conf['appliance_url'], | ||||||||||||||||||||||||||||||||||||||||
conf['account'], | ||||||||||||||||||||||||||||||||||||||||
identity['id'], | ||||||||||||||||||||||||||||||||||||||||
identity['api_key'], | ||||||||||||||||||||||||||||||||||||||||
validate_certs, | ||||||||||||||||||||||||||||||||||||||||
cert_file | ||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||
if ((isExist is False) or (isEmpty == 0)): | ||||||||||||||||||||||||||||||||||||||||
token = _fetch_conjur_token( | ||||||||||||||||||||||||||||||||||||||||
conf['appliance_url'], | ||||||||||||||||||||||||||||||||||||||||
conf['account'], | ||||||||||||||||||||||||||||||||||||||||
identity['id'], | ||||||||||||||||||||||||||||||||||||||||
identity['api_key'], | ||||||||||||||||||||||||||||||||||||||||
validate_certs, | ||||||||||||||||||||||||||||||||||||||||
cert_file | ||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||
with open("plugin_token.txt", "wb") as binary_file: | ||||||||||||||||||||||||||||||||||||||||
binary_file.write(token) | ||||||||||||||||||||||||||||||||||||||||
else: | ||||||||||||||||||||||||||||||||||||||||
with open("plugin_token.txt", "rb") as f: | ||||||||||||||||||||||||||||||||||||||||
token = f.read() | ||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think that we can use the existing
Given that, we could probably re-arrange this bit: if 'authn_token_file' not in conf:
token = _fetch_conjur_token(...)
else:
if os.path.exists(conf['authn_token_file']):
with open(conf['authn_token_file'], 'rb') as f:
token = f.read()
else:
token = _fetch_conjur_token(...)
with open(conf['authn_token_file'], "wb") as f:
f.write(token) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Made changes to use the existing file "access_token" . |
||||||||||||||||||||||||||||||||||||||||
else: | ||||||||||||||||||||||||||||||||||||||||
if not os.path.exists(conf['authn_token_file']): | ||||||||||||||||||||||||||||||||||||||||
raise AnsibleError('Conjur authn token file `{0}` was not found on the host' | ||||||||||||||||||||||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If this file location is used for token storage, it should be added to
.gitignore
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes , it is there.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
now in new changes , I am not using any new file .