本文整理汇总了Python中oic.oauth2.consumer.Consumer.construct_AuthorizationRequest方法的典型用法代码示例。如果您正苦于以下问题:Python Consumer.construct_AuthorizationRequest方法的具体用法?Python Consumer.construct_AuthorizationRequest怎么用?Python Consumer.construct_AuthorizationRequest使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类oic.oauth2.consumer.Consumer
的用法示例。
在下文中一共展示了Consumer.construct_AuthorizationRequest方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _OAuthBackend
# 需要导入模块: from oic.oauth2.consumer import Consumer [as 别名]
# 或者: from oic.oauth2.consumer.Consumer import construct_AuthorizationRequest [as 别名]
class _OAuthBackend(BackendModule):
"""
Backend module for OAuth 2.0, should not be directly used.
See satosa.backends.oauth.FacebookBackend.
"""
def __init__(self, outgoing, internal_attributes, config, base_url, name, external_type, user_id_attr):
"""
:param outgoing: Callback should be called by the module after the authorization in the
backend is done.
:param internal_attributes: Mapping dictionary between SATOSA internal attribute names and
the names returned by underlying IdP's/OP's as well as what attributes the calling SP's and
RP's expects namevice.
:param config: Configuration parameters for the module.
:param base_url: base url of the service
:param name: name of the plugin
:param external_type: The name for this module in the internal attributes.
:type outgoing:
(satosa.context.Context, satosa.internal_data.InternalResponse) -> satosa.response.Response
:type internal_attributes: dict[string, dict[str, str | list[str]]]
:type config: dict[str, dict[str, str] | list[str]]
:type base_url: str
:type name: str
:type external_type: str
"""
super().__init__(outgoing, internal_attributes, base_url, name)
self.config = config
self.redirect_url = "%s/%s" % (self.config["base_url"], self.config["authz_page"])
self.external_type = external_type
self.user_id_attr = user_id_attr
self.consumer = Consumer(
session_db=None,
client_config=self.config["client_config"],
server_info=self.config["server_info"],
authz_page=self.config["authz_page"],
response_type=self.config["response_type"])
self.consumer.client_secret = self.config["client_secret"]
def start_auth(self, context, internal_request, get_state=stateID):
"""
See super class method satosa.backends.base#start_auth
:param get_state: Generates a state to be used in the authentication call.
:type get_state: Callable[[str, bytes], str]
:type context: satosa.context.Context
:type internal_request: satosa.internal_data.InternalRequest
:rtype satosa.response.Redirect
"""
oauth_state = get_state(self.config["base_url"], rndstr().encode())
state_data = dict(state=oauth_state)
context.state[self.name] = state_data
request_args = {"redirect_uri": self.redirect_url, "state": oauth_state}
cis = self.consumer.construct_AuthorizationRequest(request_args=request_args)
return Redirect(cis.request(self.consumer.authorization_endpoint))
def register_endpoints(self):
"""
Creates a list of all the endpoints this backend module needs to listen to. In this case
it's the authentication response from the underlying OP that is redirected from the OP to
the proxy.
:rtype: Sequence[(str, Callable[[satosa.context.Context], satosa.response.Response]]
:return: A list that can be used to map the request to SATOSA to this endpoint.
"""
return [("^%s$" % self.config["authz_page"], self._authn_response)]
def _verify_state(self, resp, state_data, state):
"""
Will verify the state and throw and error if the state is invalid.
:type resp: AuthorizationResponse
:type state_data: dict[str, str]
:type state: satosa.state.State
:param resp: The authorization response from the AS, created by pyoidc.
:param state_data: The state data for this backend.
:param state: The current state for the proxy and this backend.
Only used for raising errors.
"""
is_known_state = "state" in resp and "state" in state_data and resp["state"] == state_data["state"]
if not is_known_state:
received_state = resp.get("state", "")
satosa_logging(logger, logging.DEBUG,
"Missing or invalid state [%s] in response!" % received_state, state)
raise SATOSAAuthenticationError(state,
"Missing or invalid state [%s] in response!" %
received_state)
def _authn_response(self, context):
"""
Handles the authentication response from the AS.
:type context: satosa.context.Context
:rtype: satosa.response.Response
:param context: The context in SATOSA
:return: A SATOSA response. This method is only responsible to call the callback function
which generates the Response object.
"""
state_data = context.state[self.name]
#.........这里部分代码省略.........