You've already forked authentication-service
mirror of
https://github.com/matrix-org/matrix-authentication-service.git
synced 2025-07-29 22:01:14 +03:00
Don't leak secrets in requests Debug format
This commit is contained in:
committed by
Quentin Gliech
parent
5cff55c099
commit
c590e8df92
@ -12,7 +12,7 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
use std::{collections::HashSet, hash::Hash, num::NonZeroU32};
|
use std::{collections::HashSet, fmt, hash::Hash, num::NonZeroU32};
|
||||||
|
|
||||||
use chrono::{DateTime, Duration, Utc};
|
use chrono::{DateTime, Duration, Utc};
|
||||||
use language_tags::LanguageTag;
|
use language_tags::LanguageTag;
|
||||||
@ -176,7 +176,7 @@ pub enum Prompt {
|
|||||||
/// [Authorization Endpoint]: https://www.rfc-editor.org/rfc/rfc6749.html#section-3.1
|
/// [Authorization Endpoint]: https://www.rfc-editor.org/rfc/rfc6749.html#section-3.1
|
||||||
#[skip_serializing_none]
|
#[skip_serializing_none]
|
||||||
#[serde_as]
|
#[serde_as]
|
||||||
#[derive(Serialize, Deserialize, Debug, Clone)]
|
#[derive(Serialize, Deserialize, Clone)]
|
||||||
pub struct AuthorizationRequest {
|
pub struct AuthorizationRequest {
|
||||||
/// OAuth 2.0 Response Type value that determines the authorization
|
/// OAuth 2.0 Response Type value that determines the authorization
|
||||||
/// processing flow to be used.
|
/// processing flow to be used.
|
||||||
@ -297,17 +297,45 @@ impl AuthorizationRequest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl fmt::Debug for AuthorizationRequest {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
|
f.debug_struct("AuthorizationRequest")
|
||||||
|
.field("response_type", &self.response_type)
|
||||||
|
.field("redirect_uri", &self.redirect_uri)
|
||||||
|
.field("scope", &self.scope)
|
||||||
|
.field("response_mode", &self.response_mode)
|
||||||
|
.field("display", &self.display)
|
||||||
|
.field("prompt", &self.prompt)
|
||||||
|
.field("max_age", &self.max_age)
|
||||||
|
.field("ui_locales", &self.ui_locales)
|
||||||
|
.field("login_hint", &self.login_hint)
|
||||||
|
.field("acr_values", &self.acr_values)
|
||||||
|
.field("request", &self.request)
|
||||||
|
.field("request_uri", &self.request_uri)
|
||||||
|
.field("registration", &self.registration)
|
||||||
|
.finish()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// A successful response from the [Authorization Endpoint].
|
/// A successful response from the [Authorization Endpoint].
|
||||||
///
|
///
|
||||||
/// [Authorization Endpoint]: https://www.rfc-editor.org/rfc/rfc6749.html#section-3.1
|
/// [Authorization Endpoint]: https://www.rfc-editor.org/rfc/rfc6749.html#section-3.1
|
||||||
#[skip_serializing_none]
|
#[skip_serializing_none]
|
||||||
#[derive(Serialize, Deserialize, Default, Debug, Clone)]
|
#[derive(Serialize, Deserialize, Default, Clone)]
|
||||||
pub struct AuthorizationResponse<R> {
|
pub struct AuthorizationResponse<R> {
|
||||||
pub code: Option<String>,
|
pub code: Option<String>,
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
pub response: R,
|
pub response: R,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<R: fmt::Debug> fmt::Debug for AuthorizationResponse<R> {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
|
f.debug_struct("AuthorizationResponse")
|
||||||
|
.field("response", &self.response)
|
||||||
|
.finish_non_exhaustive()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// A request to the [Device Authorization Endpoint].
|
/// A request to the [Device Authorization Endpoint].
|
||||||
///
|
///
|
||||||
/// [Device Authorization Endpoint]: https://www.rfc-editor.org/rfc/rfc8628
|
/// [Device Authorization Endpoint]: https://www.rfc-editor.org/rfc/rfc8628
|
||||||
@ -324,7 +352,7 @@ pub const DEFAULT_DEVICE_AUTHORIZATION_INTERVAL_SECONDS: i64 = 5;
|
|||||||
/// [Device Authorization Endpoint]: https://www.rfc-editor.org/rfc/rfc8628
|
/// [Device Authorization Endpoint]: https://www.rfc-editor.org/rfc/rfc8628
|
||||||
#[serde_as]
|
#[serde_as]
|
||||||
#[skip_serializing_none]
|
#[skip_serializing_none]
|
||||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
|
#[derive(Serialize, Deserialize, Clone, PartialEq, Eq)]
|
||||||
pub struct DeviceAuthorizationResponse {
|
pub struct DeviceAuthorizationResponse {
|
||||||
/// The device verification code.
|
/// The device verification code.
|
||||||
device_code: String,
|
device_code: String,
|
||||||
@ -367,12 +395,22 @@ impl DeviceAuthorizationResponse {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl fmt::Debug for DeviceAuthorizationResponse {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
|
f.debug_struct("DeviceAuthorizationResponse")
|
||||||
|
.field("verification_uri", &self.verification_uri)
|
||||||
|
.field("expires_in", &self.expires_in)
|
||||||
|
.field("interval", &self.interval)
|
||||||
|
.finish()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// A request to the [Token Endpoint] for the [Authorization Code] grant type.
|
/// A request to the [Token Endpoint] for the [Authorization Code] grant type.
|
||||||
///
|
///
|
||||||
/// [Token Endpoint]: https://www.rfc-editor.org/rfc/rfc6749#section-3.2
|
/// [Token Endpoint]: https://www.rfc-editor.org/rfc/rfc6749#section-3.2
|
||||||
/// [Authorization Code]: https://www.rfc-editor.org/rfc/rfc6749#section-4.1
|
/// [Authorization Code]: https://www.rfc-editor.org/rfc/rfc6749#section-4.1
|
||||||
#[skip_serializing_none]
|
#[skip_serializing_none]
|
||||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
|
#[derive(Serialize, Deserialize, Clone, PartialEq, Eq)]
|
||||||
pub struct AuthorizationCodeGrant {
|
pub struct AuthorizationCodeGrant {
|
||||||
/// The authorization code that was returned from the authorization
|
/// The authorization code that was returned from the authorization
|
||||||
/// endpoint.
|
/// endpoint.
|
||||||
@ -390,12 +428,20 @@ pub struct AuthorizationCodeGrant {
|
|||||||
pub code_verifier: Option<String>,
|
pub code_verifier: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl fmt::Debug for AuthorizationCodeGrant {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
|
f.debug_struct("AuthorizationCodeGrant")
|
||||||
|
.field("redirect_uri", &self.redirect_uri)
|
||||||
|
.finish_non_exhaustive()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// A request to the [Token Endpoint] for [refreshing an access token].
|
/// A request to the [Token Endpoint] for [refreshing an access token].
|
||||||
///
|
///
|
||||||
/// [Token Endpoint]: https://www.rfc-editor.org/rfc/rfc6749#section-3.2
|
/// [Token Endpoint]: https://www.rfc-editor.org/rfc/rfc6749#section-3.2
|
||||||
/// [refreshing an access token]: https://www.rfc-editor.org/rfc/rfc6749#section-6
|
/// [refreshing an access token]: https://www.rfc-editor.org/rfc/rfc6749#section-6
|
||||||
#[skip_serializing_none]
|
#[skip_serializing_none]
|
||||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
|
#[derive(Serialize, Deserialize, Clone, PartialEq, Eq)]
|
||||||
pub struct RefreshTokenGrant {
|
pub struct RefreshTokenGrant {
|
||||||
/// The refresh token issued to the client.
|
/// The refresh token issued to the client.
|
||||||
pub refresh_token: String,
|
pub refresh_token: String,
|
||||||
@ -408,6 +454,14 @@ pub struct RefreshTokenGrant {
|
|||||||
pub scope: Option<Scope>,
|
pub scope: Option<Scope>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl fmt::Debug for RefreshTokenGrant {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
|
f.debug_struct("RefreshTokenGrant")
|
||||||
|
.field("scope", &self.scope)
|
||||||
|
.finish_non_exhaustive()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// A request to the [Token Endpoint] for the [Client Credentials] grant type.
|
/// A request to the [Token Endpoint] for the [Client Credentials] grant type.
|
||||||
///
|
///
|
||||||
/// [Token Endpoint]: https://www.rfc-editor.org/rfc/rfc6749#section-3.2
|
/// [Token Endpoint]: https://www.rfc-editor.org/rfc/rfc6749#section-3.2
|
||||||
@ -422,12 +476,18 @@ pub struct ClientCredentialsGrant {
|
|||||||
///
|
///
|
||||||
/// [Token Endpoint]: https://www.rfc-editor.org/rfc/rfc6749#section-3.2
|
/// [Token Endpoint]: https://www.rfc-editor.org/rfc/rfc6749#section-3.2
|
||||||
/// [Device Authorization]: https://www.rfc-editor.org/rfc/rfc8628
|
/// [Device Authorization]: https://www.rfc-editor.org/rfc/rfc8628
|
||||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
|
#[derive(Serialize, Deserialize, Clone, PartialEq, Eq)]
|
||||||
pub struct DeviceCodeGrant {
|
pub struct DeviceCodeGrant {
|
||||||
/// The device verification code, from the device authorization response.
|
/// The device verification code, from the device authorization response.
|
||||||
pub device_code: Option<Scope>,
|
pub device_code: Option<Scope>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl fmt::Debug for DeviceCodeGrant {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
|
f.debug_struct("DeviceCodeGrant").finish_non_exhaustive()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// All possible values for the `grant_type` parameter.
|
/// All possible values for the `grant_type` parameter.
|
||||||
#[derive(
|
#[derive(
|
||||||
Debug,
|
Debug,
|
||||||
@ -489,7 +549,7 @@ pub enum AccessTokenRequest {
|
|||||||
/// [Token Endpoint]: https://www.rfc-editor.org/rfc/rfc6749#section-3.2
|
/// [Token Endpoint]: https://www.rfc-editor.org/rfc/rfc6749#section-3.2
|
||||||
#[serde_as]
|
#[serde_as]
|
||||||
#[skip_serializing_none]
|
#[skip_serializing_none]
|
||||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
|
#[derive(Serialize, Deserialize, Clone, PartialEq, Eq)]
|
||||||
pub struct AccessTokenResponse {
|
pub struct AccessTokenResponse {
|
||||||
/// The access token to access the requested scope.
|
/// The access token to access the requested scope.
|
||||||
pub access_token: String,
|
pub access_token: String,
|
||||||
@ -555,11 +615,21 @@ impl AccessTokenResponse {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl fmt::Debug for AccessTokenResponse {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
|
f.debug_struct("AccessTokenResponse")
|
||||||
|
.field("token_type", &self.token_type)
|
||||||
|
.field("expires_in", &self.expires_in)
|
||||||
|
.field("scope", &self.scope)
|
||||||
|
.finish_non_exhaustive()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// A request to the [Introspection Endpoint].
|
/// A request to the [Introspection Endpoint].
|
||||||
///
|
///
|
||||||
/// [Introspection Endpoint]: https://www.rfc-editor.org/rfc/rfc7662#section-2
|
/// [Introspection Endpoint]: https://www.rfc-editor.org/rfc/rfc7662#section-2
|
||||||
#[skip_serializing_none]
|
#[skip_serializing_none]
|
||||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
|
#[derive(Serialize, Deserialize, Clone, PartialEq, Eq)]
|
||||||
pub struct IntrospectionRequest {
|
pub struct IntrospectionRequest {
|
||||||
/// The value of the token.
|
/// The value of the token.
|
||||||
pub token: String,
|
pub token: String,
|
||||||
@ -568,6 +638,14 @@ pub struct IntrospectionRequest {
|
|||||||
pub token_type_hint: Option<OAuthTokenTypeHint>,
|
pub token_type_hint: Option<OAuthTokenTypeHint>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl fmt::Debug for IntrospectionRequest {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
|
f.debug_struct("IntrospectionRequest")
|
||||||
|
.field("token_type_hint", &self.token_type_hint)
|
||||||
|
.finish_non_exhaustive()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// A successful response from the [Introspection Endpoint].
|
/// A successful response from the [Introspection Endpoint].
|
||||||
///
|
///
|
||||||
/// [Introspection Endpoint]: https://www.rfc-editor.org/rfc/rfc7662#section-2
|
/// [Introspection Endpoint]: https://www.rfc-editor.org/rfc/rfc7662#section-2
|
||||||
|
Reference in New Issue
Block a user