)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d7b8f4459da9f77b7c486edcdf5f83227b9d84a4","unresolved":false,"context_lines":[{"line_number":7,"context_line":"oidc: fix OpenID Connect authorization code grant_type"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The current code is not working appropiately, as the authorization code"},{"line_number":10,"context_line":"is a short-lived (the specification reccomends less than 10 minutes) and"},{"line_number":11,"context_line":"single use code, so it cannot be reused (if reused, the specification"},{"line_number":12,"context_line":"states that all tokens obtained with the original code should be"},{"line_number":13,"context_line":"revoked). Therefore, if we are implementing the authorization code grant"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"1aa78d24_4e39b8f1","line":10,"updated":"2016-07-06 20:45:13.000000000","message":"recommends*","commit_id":"e77029d49b166cdfc4dc71206fe098ec07fb3911"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"73204a409c30bf353d08a781126dfb4721af682d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"oidc: fix OpenID Connect authorization code grant_type"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The current code is not working appropiately, as the authorization code"},{"line_number":10,"context_line":"is a short-lived (the specification reccomends less than 10 minutes) and"},{"line_number":11,"context_line":"single use code, so it cannot be reused (if reused, the specification"},{"line_number":12,"context_line":"states that all tokens obtained with the original code should be"},{"line_number":13,"context_line":"revoked). Therefore, if we are implementing the authorization code grant"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"1aa78d24_29154648","line":10,"in_reply_to":"1aa78d24_4e39b8f1","updated":"2016-07-06 21:04:58.000000000","message":"Done","commit_id":"e77029d49b166cdfc4dc71206fe098ec07fb3911"}],"keystoneauth1/identity/v3/oidc.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b39b1dbd19d65eeb07b1b6c275c1c32f6b25dd63","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    pass"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class ClientCallbackHandler(BaseHTTPServer.BaseHTTPRequestHandler):"},{"line_number":33,"context_line":"    def do_GET(self):"},{"line_number":34,"context_line":"        self.send_response(200)"},{"line_number":35,"context_line":"        self.send_header(\"Content-type\", \"text/html\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"1aa78d24_fd888f24","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":67},"updated":"2016-07-04 23:32:23.000000000","message":"This definitely needs a docstring explaining what its doing, and a few comments in the code about why we do the steps below","commit_id":"d7d11dcebb2b7083c2d7e64329ed326489a21851"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"e0d412c20406c1eb65c75de1b1ef3ef2335e602d","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    pass"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class ClientCallbackHandler(BaseHTTPServer.BaseHTTPRequestHandler):"},{"line_number":33,"context_line":"    def do_GET(self):"},{"line_number":34,"context_line":"        self.send_response(200)"},{"line_number":35,"context_line":"        self.send_header(\"Content-type\", \"text/html\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"1aa78d24_58c4475e","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":67},"in_reply_to":"1aa78d24_fd888f24","updated":"2016-07-05 07:40:26.000000000","message":"Sure.","commit_id":"d7d11dcebb2b7083c2d7e64329ed326489a21851"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b39b1dbd19d65eeb07b1b6c275c1c32f6b25dd63","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                 **kwargs):"},{"line_number":229,"context_line":"        \"\"\"The OpenID Authorization Code plugin expects the following."},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        :param auth_url: URL of the Identity Service"},{"line_number":232,"context_line":"        :type auth_url: string"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        :param identity_provider: Name of the Identity Provider the client"},{"line_number":235,"context_line":"                                  will authenticate against"},{"line_number":236,"context_line":"        :type identity_provider: string"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        :param protocol: Protocol name as configured in keystone"},{"line_number":239,"context_line":"        :type protocol: string"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        :param client_id: OAuth 2.0 Client ID"},{"line_number":242,"context_line":"        :type client_id: string"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        :param client_secret: OAuth 2.0 Client Secret"},{"line_number":245,"context_line":"        :type client_secret: string"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        :param access_token_endpoint: OpenID Connect Provider Token Endpoint,"},{"line_number":248,"context_line":"                                      for example:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1aa78d24_9d722b48","line":245,"range":{"start_line":231,"start_character":0,"end_line":245,"end_character":35},"updated":"2016-07-04 23:32:23.000000000","message":"not a big deal, but these are already defined in OidcBase, we don\u0027t add them again in the password flow. I don\u0027t care which one we stick with, just want it to be consistent","commit_id":"d7d11dcebb2b7083c2d7e64329ed326489a21851"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"e0d412c20406c1eb65c75de1b1ef3ef2335e602d","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                 **kwargs):"},{"line_number":229,"context_line":"        \"\"\"The OpenID Authorization Code plugin expects the following."},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        :param auth_url: URL of the Identity Service"},{"line_number":232,"context_line":"        :type auth_url: string"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        :param identity_provider: Name of the Identity Provider the client"},{"line_number":235,"context_line":"                                  will authenticate against"},{"line_number":236,"context_line":"        :type identity_provider: string"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        :param protocol: Protocol name as configured in keystone"},{"line_number":239,"context_line":"        :type protocol: string"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        :param client_id: OAuth 2.0 Client ID"},{"line_number":242,"context_line":"        :type client_id: string"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        :param client_secret: OAuth 2.0 Client Secret"},{"line_number":245,"context_line":"        :type client_secret: string"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        :param access_token_endpoint: OpenID Connect Provider Token Endpoint,"},{"line_number":248,"context_line":"                                      for example:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1aa78d24_51138766","line":245,"range":{"start_line":231,"start_character":0,"end_line":245,"end_character":35},"in_reply_to":"1aa78d24_9d722b48","updated":"2016-07-05 07:40:26.000000000","message":"Hmm, you\u0027re right. I will leave them in OidcBase and remove them from here","commit_id":"d7d11dcebb2b7083c2d7e64329ed326489a21851"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b39b1dbd19d65eeb07b1b6c275c1c32f6b25dd63","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        :param client_secret: OAuth 2.0 Client Secret"},{"line_number":245,"context_line":"        :type client_secret: string"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        :param access_token_endpoint: OpenID Connect Provider Token Endpoint,"},{"line_number":248,"context_line":"                                      for example:"},{"line_number":249,"context_line":"                                      https://localhost:8020/oidc/OP/token"},{"line_number":250,"context_line":"        :type access_token_endpoint: string"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        :param authorization_endpoint: OpenID Connect Provider Authorization"},{"line_number":253,"context_line":"                                       Endpoint, for example:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1aa78d24_fd8fef20","line":250,"range":{"start_line":247,"start_character":0,"end_line":250,"end_character":43},"updated":"2016-07-04 23:32:23.000000000","message":"these too","commit_id":"d7d11dcebb2b7083c2d7e64329ed326489a21851"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"e0d412c20406c1eb65c75de1b1ef3ef2335e602d","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        :param client_secret: OAuth 2.0 Client Secret"},{"line_number":245,"context_line":"        :type client_secret: string"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        :param access_token_endpoint: OpenID Connect Provider Token Endpoint,"},{"line_number":248,"context_line":"                                      for example:"},{"line_number":249,"context_line":"                                      https://localhost:8020/oidc/OP/token"},{"line_number":250,"context_line":"        :type access_token_endpoint: string"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        :param authorization_endpoint: OpenID Connect Provider Authorization"},{"line_number":253,"context_line":"                                       Endpoint, for example:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1aa78d24_910def40","line":250,"range":{"start_line":247,"start_character":0,"end_line":250,"end_character":43},"in_reply_to":"1aa78d24_fd8fef20","updated":"2016-07-05 07:40:26.000000000","message":"and here","commit_id":"d7d11dcebb2b7083c2d7e64329ed326489a21851"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b39b1dbd19d65eeb07b1b6c275c1c32f6b25dd63","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        :type session: keystoneauth1.session.Session"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        \"\"\""},{"line_number":290,"context_line":"        payload \u003d {"},{"line_number":291,"context_line":"            \"client_id\": self.client_id,"},{"line_number":292,"context_line":"            \"response_type\": \"code\","},{"line_number":293,"context_line":"            \"scope\": self.scope,"},{"line_number":294,"context_line":"            \"redirect_uri\": self.redirect_uri"},{"line_number":295,"context_line":"        }"},{"line_number":296,"context_line":"        url \u003d \"%s?%s\" % (self.authorization_endpoint,"},{"line_number":297,"context_line":"                         urllib.parse.urlencode(payload))"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"        def wait_for_code():"},{"line_number":300,"context_line":"            server_address \u003d (self.redirect_host, self.redirect_port)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1aa78d24_fdb6cfda","line":297,"range":{"start_line":290,"start_character":8,"end_line":297,"end_character":57},"updated":"2016-07-04 23:32:23.000000000","message":"Nice","commit_id":"d7d11dcebb2b7083c2d7e64329ed326489a21851"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"e0d412c20406c1eb65c75de1b1ef3ef2335e602d","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        :type session: keystoneauth1.session.Session"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        \"\"\""},{"line_number":290,"context_line":"        payload \u003d {"},{"line_number":291,"context_line":"            \"client_id\": self.client_id,"},{"line_number":292,"context_line":"            \"response_type\": \"code\","},{"line_number":293,"context_line":"            \"scope\": self.scope,"},{"line_number":294,"context_line":"            \"redirect_uri\": self.redirect_uri"},{"line_number":295,"context_line":"        }"},{"line_number":296,"context_line":"        url \u003d \"%s?%s\" % (self.authorization_endpoint,"},{"line_number":297,"context_line":"                         urllib.parse.urlencode(payload))"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"        def wait_for_code():"},{"line_number":300,"context_line":"            server_address \u003d (self.redirect_host, self.redirect_port)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1aa78d24_78c94378","line":297,"range":{"start_line":290,"start_character":8,"end_line":297,"end_character":57},"in_reply_to":"1aa78d24_fdb6cfda","updated":"2016-07-05 07:40:26.000000000","message":":-)","commit_id":"d7d11dcebb2b7083c2d7e64329ed326489a21851"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"41c1a91c3e63e07355be8d57ae63e1e5ca798999","unresolved":false,"context_lines":[{"line_number":246,"context_line":"                 authorization_endpoint,"},{"line_number":247,"context_line":"                 grant_type\u003d\u0027authorization_code\u0027,"},{"line_number":248,"context_line":"                 access_token_type\u003d\u0027access_token\u0027,"},{"line_number":249,"context_line":"                 redirect_host\u003d\"localhost\", redirect_port\u003d8080,"},{"line_number":250,"context_line":"                 **kwargs):"},{"line_number":251,"context_line":"        \"\"\"The OpenID Authorization Code plugin expects the following."},{"line_number":252,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1aa78d24_a4719878","line":249,"range":{"start_line":249,"start_character":17,"end_line":249,"end_character":30},"updated":"2016-07-05 23:53:51.000000000","message":"dropping parameters","commit_id":"2cc79b77cfece1f109b81493521934a0d8077926"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d7b8f4459da9f77b7c486edcdf5f83227b9d84a4","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    \"\"\"HTTP server to handle the OpenID Connect callback to localhost."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    This server will wait for a single request, storing the authorization code"},{"line_number":37,"context_line":"    obtained from the incoming request into the \u0027code\u0027 attribute."},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    code \u003d None"}],"source_content_type":"text/x-python","patch_set":22,"id":"1aa78d24_496c12d0","line":37,"updated":"2016-07-06 20:45:13.000000000","message":"This is stored as part of the session, right? We could note here that once the session is gone, the code needs to be fetched again.\n\nnit: use backticks `code`.","commit_id":"e77029d49b166cdfc4dc71206fe098ec07fb3911"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"73204a409c30bf353d08a781126dfb4721af682d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    \"\"\"HTTP server to handle the OpenID Connect callback to localhost."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    This server will wait for a single request, storing the authorization code"},{"line_number":37,"context_line":"    obtained from the incoming request into the \u0027code\u0027 attribute."},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    code \u003d None"}],"source_content_type":"text/x-python","patch_set":22,"id":"1aa78d24_e9f4de5b","line":37,"in_reply_to":"1aa78d24_496c12d0","updated":"2016-07-06 21:04:58.000000000","message":"Not really. What should be persisted is the access_token, not the authorization code. The code is single-used, short-lived, but the access_code can be reused and/or refreshed.","commit_id":"e77029d49b166cdfc4dc71206fe098ec07fb3911"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d7b8f4459da9f77b7c486edcdf5f83227b9d84a4","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    (via redirection), where the access code will be obtained."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    This class implements a request handler that will process a single request"},{"line_number":62,"context_line":"    and store the obtained code into the server\u0027s \u0027code\u0027 attribute"},{"line_number":63,"context_line":"    \"\"\""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def do_GET(self):"}],"source_content_type":"text/x-python","patch_set":22,"id":"1aa78d24_497a5278","line":62,"updated":"2016-07-06 20:45:13.000000000","message":"nit: use backticks `code`","commit_id":"e77029d49b166cdfc4dc71206fe098ec07fb3911"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"73204a409c30bf353d08a781126dfb4721af682d","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    (via redirection), where the access code will be obtained."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    This class implements a request handler that will process a single request"},{"line_number":62,"context_line":"    and store the obtained code into the server\u0027s \u0027code\u0027 attribute"},{"line_number":63,"context_line":"    \"\"\""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def do_GET(self):"}],"source_content_type":"text/x-python","patch_set":22,"id":"1aa78d24_c99122f3","line":62,"in_reply_to":"1aa78d24_497a5278","updated":"2016-07-06 21:04:58.000000000","message":"Done","commit_id":"e77029d49b166cdfc4dc71206fe098ec07fb3911"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d7b8f4459da9f77b7c486edcdf5f83227b9d84a4","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.server.code \u003d code"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def log_message(self, format, *args):"},{"line_number":86,"context_line":"        \"\"\"Do not log messages to stdout.\"\"\""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"class _OidcBase(federation.FederationBaseAuth):"}],"source_content_type":"text/x-python","patch_set":22,"id":"1aa78d24_a98bf666","line":86,"updated":"2016-07-06 20:45:13.000000000","message":"Should we have a `pass` here?","commit_id":"e77029d49b166cdfc4dc71206fe098ec07fb3911"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"73204a409c30bf353d08a781126dfb4721af682d","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.server.code \u003d code"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def log_message(self, format, *args):"},{"line_number":86,"context_line":"        \"\"\"Do not log messages to stdout.\"\"\""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"class _OidcBase(federation.FederationBaseAuth):"}],"source_content_type":"text/x-python","patch_set":22,"id":"1aa78d24_09be8a64","line":86,"in_reply_to":"1aa78d24_a98bf666","updated":"2016-07-06 21:04:58.000000000","message":"If keystone style requires a pass I\u0027m happy to add it, but following Python\u0027s grammer this is correct without the \"pass\".","commit_id":"e77029d49b166cdfc4dc71206fe098ec07fb3911"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"c2bee2379d7f01b7ecb3da7719aa66d9008bf949","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import socket"},{"line_number":14,"context_line":"import webbrowser"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from positional import positional"},{"line_number":17,"context_line":"from six.moves import BaseHTTPServer"}],"source_content_type":"text/x-python","patch_set":24,"id":"1aa78d24_32a9d491","line":14,"range":{"start_line":14,"start_character":7,"end_line":14,"end_character":17},"updated":"2016-07-14 04:01:10.000000000","message":"I would prefer to leave this broken for now than introduce popping up a webbrowser into the auth chain.","commit_id":"df413fe0714055294b76f2ae73a038c104565e1a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"c2bee2379d7f01b7ecb3da7719aa66d9008bf949","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        # NOTE(aloga): cannot call super here, as HTTPServer does not have"},{"line_number":49,"context_line":"        # object as an ancestor"},{"line_number":50,"context_line":"        BaseHTTPServer.HTTPServer.server_bind(self)"},{"line_number":51,"context_line":"        self.socket.settimeout(60)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"class _ClientCallbackHandler(BaseHTTPServer.BaseHTTPRequestHandler):"}],"source_content_type":"text/x-python","patch_set":24,"id":"1aa78d24_46cdc5b6","line":51,"range":{"start_line":51,"start_character":8,"end_line":51,"end_character":12},"updated":"2016-07-14 04:01:10.000000000","message":"if you do the port thing below you might want to just set this later.","commit_id":"df413fe0714055294b76f2ae73a038c104565e1a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"c2bee2379d7f01b7ecb3da7719aa66d9008bf949","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            b\"\u003c/body\u003e\u003c/html\u003e\")"},{"line_number":80,"context_line":"        parsed \u003d urlparse.urlparse(self.path)"},{"line_number":81,"context_line":"        query \u003d urlparse.parse_qs(parsed.query)"},{"line_number":82,"context_line":"        code \u003d query.get(\"code\", [None])[0]"},{"line_number":83,"context_line":"        self.server.code \u003d code"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def log_message(self, format, *args):"}],"source_content_type":"text/x-python","patch_set":24,"id":"1aa78d24_46f665fa","line":82,"range":{"start_line":82,"start_character":19,"end_line":82,"end_character":20},"updated":"2016-07-14 04:01:10.000000000","message":"do you actually want to parse the code out first and then return a message based on that. \n\nLike No Code Found","commit_id":"df413fe0714055294b76f2ae73a038c104565e1a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"c2bee2379d7f01b7ecb3da7719aa66d9008bf949","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.server.code \u003d code"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def log_message(self, format, *args):"},{"line_number":86,"context_line":"        \"\"\"Do not log messages to stdout.\"\"\""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"class _OidcBase(federation.FederationBaseAuth):"}],"source_content_type":"text/x-python","patch_set":24,"id":"1aa78d24_528460b0","line":86,"range":{"start_line":86,"start_character":22,"end_line":86,"end_character":30},"updated":"2016-07-14 04:01:10.000000000","message":"a debug log output would be useful here","commit_id":"df413fe0714055294b76f2ae73a038c104565e1a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"c2bee2379d7f01b7ecb3da7719aa66d9008bf949","unresolved":false,"context_lines":[{"line_number":262,"context_line":"                 authorization_endpoint,"},{"line_number":263,"context_line":"                 grant_type\u003d\u0027authorization_code\u0027,"},{"line_number":264,"context_line":"                 access_token_type\u003d\u0027access_token\u0027,"},{"line_number":265,"context_line":"                 redirect_host\u003d\"localhost\", redirect_port\u003d8080,"},{"line_number":266,"context_line":"                 **kwargs):"},{"line_number":267,"context_line":"        \"\"\"The OpenID Authorization Code plugin expects the following."},{"line_number":268,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"1aa78d24_32cf142b","line":265,"range":{"start_line":265,"start_character":44,"end_line":265,"end_character":57},"updated":"2016-07-14 04:01:10.000000000","message":"would this want to be anything other than localhost?","commit_id":"df413fe0714055294b76f2ae73a038c104565e1a"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"971a1a75b69e113b17d6d8e28b32aced2b29f803","unresolved":false,"context_lines":[{"line_number":262,"context_line":"                 authorization_endpoint,"},{"line_number":263,"context_line":"                 grant_type\u003d\u0027authorization_code\u0027,"},{"line_number":264,"context_line":"                 access_token_type\u003d\u0027access_token\u0027,"},{"line_number":265,"context_line":"                 redirect_host\u003d\"localhost\", redirect_port\u003d8080,"},{"line_number":266,"context_line":"                 **kwargs):"},{"line_number":267,"context_line":"        \"\"\"The OpenID Authorization Code plugin expects the following."},{"line_number":268,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"1aa78d24_9207de17","line":265,"range":{"start_line":265,"start_character":44,"end_line":265,"end_character":57},"in_reply_to":"1aa78d24_32cf142b","updated":"2016-07-14 09:16:45.000000000","message":"In this context, since the browser is the one making the callback, no, it will be only localhost.","commit_id":"df413fe0714055294b76f2ae73a038c104565e1a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"c2bee2379d7f01b7ecb3da7719aa66d9008bf949","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        :param redirect_port: The port where the authorization request will"},{"line_number":276,"context_line":"                              be redirected. This indicates the port where the"},{"line_number":277,"context_line":"                              callback http server will bind to."},{"line_number":278,"context_line":"        :type redirect_port: int"},{"line_number":279,"context_line":"        \"\"\""},{"line_number":280,"context_line":"        super(OidcAuthorizationCode, self).__init__("},{"line_number":281,"context_line":"            auth_url\u003dauth_url,"}],"source_content_type":"text/x-python","patch_set":24,"id":"1aa78d24_2624f9b0","line":278,"range":{"start_line":278,"start_character":14,"end_line":278,"end_character":27},"updated":"2016-07-14 04:01:10.000000000","message":"instead of taking this as an option you can set port to 0 which tells the OS to pick any available port. later you get the port by:\n\nip, port \u003d httpd.socket.getsockname()","commit_id":"df413fe0714055294b76f2ae73a038c104565e1a"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"971a1a75b69e113b17d6d8e28b32aced2b29f803","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        :param redirect_port: The port where the authorization request will"},{"line_number":276,"context_line":"                              be redirected. This indicates the port where the"},{"line_number":277,"context_line":"                              callback http server will bind to."},{"line_number":278,"context_line":"        :type redirect_port: int"},{"line_number":279,"context_line":"        \"\"\""},{"line_number":280,"context_line":"        super(OidcAuthorizationCode, self).__init__("},{"line_number":281,"context_line":"            auth_url\u003dauth_url,"}],"source_content_type":"text/x-python","patch_set":24,"id":"1aa78d24_d23846d7","line":278,"range":{"start_line":278,"start_character":14,"end_line":278,"end_character":27},"in_reply_to":"1aa78d24_2624f9b0","updated":"2016-07-14 09:16:45.000000000","message":"Unfortunately you can\u0027t do this. In most OIDC auth servers you must define a redirect url when you create a client, therefore you need to know the url beforehand (thus you need to set up a fixed port by hand).","commit_id":"df413fe0714055294b76f2ae73a038c104565e1a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"c2bee2379d7f01b7ecb3da7719aa66d9008bf949","unresolved":false,"context_lines":[{"line_number":326,"context_line":"                raise exceptions.MissingOidcAuthorizationCode()"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        webbrowser.open(url, new\u003d1, autoraise\u003dTrue)"},{"line_number":329,"context_line":"        code \u003d wait_for_code()"},{"line_number":330,"context_line":"        return code"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    def get_unscoped_auth_ref(self, session):"}],"source_content_type":"text/x-python","patch_set":24,"id":"1aa78d24_e6b79138","line":329,"range":{"start_line":329,"start_character":8,"end_line":329,"end_character":12},"updated":"2016-07-14 04:01:10.000000000","message":"why is this is a nested function?","commit_id":"df413fe0714055294b76f2ae73a038c104565e1a"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"971a1a75b69e113b17d6d8e28b32aced2b29f803","unresolved":false,"context_lines":[{"line_number":326,"context_line":"                raise exceptions.MissingOidcAuthorizationCode()"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        webbrowser.open(url, new\u003d1, autoraise\u003dTrue)"},{"line_number":329,"context_line":"        code \u003d wait_for_code()"},{"line_number":330,"context_line":"        return code"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    def get_unscoped_auth_ref(self, session):"}],"source_content_type":"text/x-python","patch_set":24,"id":"1aa78d24_3250aa0a","line":329,"range":{"start_line":329,"start_character":8,"end_line":329,"end_character":12},"in_reply_to":"1aa78d24_e6b79138","updated":"2016-07-14 09:16:45.000000000","message":"For no specific reason.","commit_id":"df413fe0714055294b76f2ae73a038c104565e1a"}],"keystoneauth1/loading/_plugins/identity/v3.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d7b8f4459da9f77b7c486edcdf5f83227b9d84a4","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            loading.Opt(\u0027access-token-endpoint\u0027,"},{"line_number":95,"context_line":"                        help\u003d\u0027OpenID Connect Provider Token Endpoint\u0027),"},{"line_number":96,"context_line":"            loading.Opt(\u0027access-token-type\u0027,"},{"line_number":97,"context_line":"                        default\u003d\"access_token\","},{"line_number":98,"context_line":"                        help\u003d\u0027OAuth 2.0 Authorization Server Introspection \u0027"},{"line_number":99,"context_line":"                             \u0027token type, it is used to decide which type \u0027"},{"line_number":100,"context_line":"                             \u0027of token will be used when processing token \u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"1aa78d24_295b86f7","line":97,"updated":"2016-07-06 20:45:13.000000000","message":"nit: use single quotes to be consistent with the surrounding code.","commit_id":"e77029d49b166cdfc4dc71206fe098ec07fb3911"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"73204a409c30bf353d08a781126dfb4721af682d","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            loading.Opt(\u0027access-token-endpoint\u0027,"},{"line_number":95,"context_line":"                        help\u003d\u0027OpenID Connect Provider Token Endpoint\u0027),"},{"line_number":96,"context_line":"            loading.Opt(\u0027access-token-type\u0027,"},{"line_number":97,"context_line":"                        default\u003d\"access_token\","},{"line_number":98,"context_line":"                        help\u003d\u0027OAuth 2.0 Authorization Server Introspection \u0027"},{"line_number":99,"context_line":"                             \u0027token type, it is used to decide which type \u0027"},{"line_number":100,"context_line":"                             \u0027of token will be used when processing token \u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"1aa78d24_69762ed8","line":97,"in_reply_to":"1aa78d24_295b86f7","updated":"2016-07-06 21:04:58.000000000","message":"Done","commit_id":"e77029d49b166cdfc4dc71206fe098ec07fb3911"}]}
