Skip to content
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

Minor refactor on role/group code. #54

Merged

Conversation

distortedsignal
Copy link
Contributor

This is a minor refactor on the role/group code, and a little on the code that returns the username as well.

I was thinking about this code over the weekend, and I realized that, even if there was no way for the user to log in via groups, we would still run the XPath to get their groups from the SAML Response. I would prefer that we only run the XPath if we have to.

There was some collateral damage to the final code that checks if the user needs to be created in the system and returns the username.

Developer Certificate of Origin Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors. 660 York Street, Suite 102, San Francisco, CA 94110 USA

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or

(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or

(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.

(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved.

Signed-off-by: Thomas Kelley distortedsignal@gmail.com

@@ -588,8 +591,6 @@ def _get_roles_from_saml_etree(self, signed_xml):
return xpath_result

self.log.warning('Could not find role from role XPath')
else:
self.log.warning('Role XPath not set')
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was a dead branch because this issue was taken care of on (new) line 666.


def _check_role(self, user_roles):
if self.allowed_roles:
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This check was removed because it is now taken care of by (new) line 662.

user_roles_result = self._check_role(user_roles)
if not user_roles_result:
self.log.error('User role not authorized')
return None
Copy link
Contributor Author

@distortedsignal distortedsignal Jul 6, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This logic was moved into _valid_config_and_roles.

return False
# Failed to validate username or failed list check
self.log.error('Failed to validate username or failed list check')
return None
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of having this function return a boolean, I think it's more literate to have the function return str or None, and return this function (new line 696).

@codecov-commenter
Copy link

Codecov Report

Merging #54 into master will increase coverage by 0.29%.
The diff coverage is 100.00%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master      #54      +/-   ##
==========================================
+ Coverage   91.75%   92.05%   +0.29%     
==========================================
  Files           2        2              
  Lines         376      390      +14     
==========================================
+ Hits          345      359      +14     
  Misses         31       31              
Impacted Files Coverage Δ
samlauthenticator/samlauthenticator.py 92.03% <100.00%> (+0.29%) ⬆️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 6226aa5...3d667d6. Read the comment docs.

@distortedsignal
Copy link
Contributor Author

Hey @0nebody I'd appreciate if you could take a look at this and give feedback. I'll merge this in a week if I don't hear back from you.

return username
if self._valid_config_and_roles(signed_xml, saml_doc_etree):
self.log.debug('Optionally create and return user: ' + username)
return self._check_username_and_add_user(username)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like this changes to this function. Its easier to see the checks performed to authenticate a user.

Copy link
Contributor

@0nebody 0nebody left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed your changes and like the improvements.

@distortedsignal distortedsignal merged commit 743bfbd into HewlettPackard:master Jul 13, 2020
@distortedsignal distortedsignal deleted the refactor-groups branch July 13, 2020 15:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants