Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/oauthlib/openid/connect/core/endpoints/pre_configured.py: 35%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

31 statements  

1""" 

2oauthlib.openid.connect.core.endpoints.pre_configured 

3~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

4 

5This module is an implementation of various endpoints needed 

6for providing OpenID Connect servers. 

7""" 

8 

9from oauthlib.oauth2.rfc6749.endpoints import ( 

10 AuthorizationEndpoint, 

11 IntrospectEndpoint, 

12 ResourceEndpoint, 

13 RevocationEndpoint, 

14 TokenEndpoint, 

15) 

16from oauthlib.oauth2.rfc6749.grant_types import ( 

17 AuthorizationCodeGrant as OAuth2AuthorizationCodeGrant, 

18 ClientCredentialsGrant, 

19 ImplicitGrant as OAuth2ImplicitGrant, 

20 ResourceOwnerPasswordCredentialsGrant, 

21) 

22from oauthlib.oauth2.rfc8628.grant_types import DeviceCodeGrant 

23from oauthlib.oauth2.rfc6749.tokens import BearerToken 

24 

25from ..grant_types import ( 

26 AuthorizationCodeGrant, 

27 HybridGrant, 

28 ImplicitGrant, 

29 RefreshTokenGrant, 

30) 

31from ..grant_types.dispatchers import ( 

32 AuthorizationCodeGrantDispatcher, 

33 AuthorizationTokenGrantDispatcher, 

34 ImplicitTokenGrantDispatcher, 

35) 

36from ..tokens import JWTToken 

37from .userinfo import UserInfoEndpoint 

38 

39 

40class Server( 

41 AuthorizationEndpoint, 

42 IntrospectEndpoint, 

43 TokenEndpoint, 

44 ResourceEndpoint, 

45 RevocationEndpoint, 

46 UserInfoEndpoint, 

47): 

48 """ 

49 An all-in-one endpoint featuring all four major grant types 

50 and extension grants. 

51 """ 

52 

53 def __init__( 

54 self, 

55 request_validator, 

56 token_expires_in=None, 

57 token_generator=None, 

58 refresh_token_generator=None, 

59 *args, 

60 **kwargs, 

61 ): 

62 """Construct a new all-grants-in-one server. 

63 

64 :param request_validator: An implementation of 

65 oauthlib.oauth2.RequestValidator. 

66 :param token_expires_in: An int or a function to generate a token 

67 expiration offset (in seconds) given a 

68 oauthlib.common.Request object. 

69 :param token_generator: A function to generate a token from a request. 

70 :param refresh_token_generator: A function to generate a token from a 

71 request for the refresh token. 

72 :param kwargs: Extra parameters to pass to authorization-, 

73 token-, resource-, and revocation-endpoint constructors. 

74 """ 

75 self.auth_grant = OAuth2AuthorizationCodeGrant(request_validator) 

76 self.implicit_grant = OAuth2ImplicitGrant(request_validator) 

77 self.password_grant = ResourceOwnerPasswordCredentialsGrant(request_validator) 

78 self.credentials_grant = ClientCredentialsGrant(request_validator) 

79 self.refresh_grant = RefreshTokenGrant(request_validator) 

80 self.openid_connect_auth = AuthorizationCodeGrant(request_validator) 

81 self.openid_connect_implicit = ImplicitGrant(request_validator) 

82 self.openid_connect_hybrid = HybridGrant(request_validator) 

83 self.device_code_grant = DeviceCodeGrant(request_validator, **kwargs) 

84 

85 self.bearer = BearerToken( 

86 request_validator, token_generator, token_expires_in, refresh_token_generator 

87 ) 

88 

89 self.jwt = JWTToken( 

90 request_validator, token_generator, token_expires_in, refresh_token_generator 

91 ) 

92 

93 self.auth_grant_choice = AuthorizationCodeGrantDispatcher( 

94 default_grant=self.auth_grant, oidc_grant=self.openid_connect_auth 

95 ) 

96 self.implicit_grant_choice = ImplicitTokenGrantDispatcher( 

97 default_grant=self.implicit_grant, oidc_grant=self.openid_connect_implicit 

98 ) 

99 

100 # See http://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#Combinations for valid combinations 

101 # internally our AuthorizationEndpoint will ensure they can appear in any order for any valid combination 

102 AuthorizationEndpoint.__init__( 

103 self, 

104 default_response_type="code", 

105 response_types={ 

106 "code": self.auth_grant_choice, 

107 "token": self.implicit_grant_choice, 

108 "id_token": self.openid_connect_implicit, 

109 "id_token token": self.openid_connect_implicit, 

110 "code token": self.openid_connect_hybrid, 

111 "code id_token": self.openid_connect_hybrid, 

112 "code id_token token": self.openid_connect_hybrid, 

113 "none": self.auth_grant, 

114 }, 

115 default_token_type=self.bearer, 

116 ) 

117 

118 self.token_grant_choice = AuthorizationTokenGrantDispatcher( 

119 request_validator, default_grant=self.auth_grant, oidc_grant=self.openid_connect_auth 

120 ) 

121 

122 TokenEndpoint.__init__( 

123 self, 

124 default_grant_type="authorization_code", 

125 grant_types={ 

126 "authorization_code": self.token_grant_choice, 

127 "password": self.password_grant, 

128 "client_credentials": self.credentials_grant, 

129 "refresh_token": self.refresh_grant, 

130 "urn:ietf:params:oauth:grant-type:device_code": self.device_code_grant, 

131 }, 

132 default_token_type=self.bearer, 

133 ) 

134 ResourceEndpoint.__init__( 

135 self, default_token="Bearer", token_types={"Bearer": self.bearer, "JWT": self.jwt} 

136 ) 

137 RevocationEndpoint.__init__(self, request_validator) 

138 IntrospectEndpoint.__init__(self, request_validator) 

139 UserInfoEndpoint.__init__(self, request_validator)