Allow to validate provider metadata
According to the OpenID Connect Discovery 1.0 spec. Provide the default values for fields when they are defined. Introduce VerifiedProviderMetadata. Rename Metadata to ProviderMetadata. Implement Deserialize for ProviderMetadata.
This commit is contained in:
committed by
Quentin Gliech
parent
3eaf2fac6d
commit
56c49be587
7
Cargo.lock
generated
7
Cargo.lock
generated
@@ -123,6 +123,12 @@ dependencies = [
|
|||||||
"password-hash",
|
"password-hash",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "assert_matches"
|
||||||
|
version = "1.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "async-compression"
|
name = "async-compression"
|
||||||
version = "0.3.14"
|
version = "0.3.14"
|
||||||
@@ -2803,6 +2809,7 @@ dependencies = [
|
|||||||
name = "oauth2-types"
|
name = "oauth2-types"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"assert_matches",
|
||||||
"chrono",
|
"chrono",
|
||||||
"data-encoding",
|
"data-encoding",
|
||||||
"http",
|
"http",
|
||||||
|
|||||||
@@ -1 +1,2 @@
|
|||||||
msrv = "1.60.0"
|
msrv = "1.60.0"
|
||||||
|
doc-valid-idents = ["OpenID", "OAuth", ".."]
|
||||||
@@ -25,7 +25,7 @@ use mas_iana::{
|
|||||||
use mas_jose::{SigningKeystore, StaticKeystore};
|
use mas_jose::{SigningKeystore, StaticKeystore};
|
||||||
use mas_router::UrlBuilder;
|
use mas_router::UrlBuilder;
|
||||||
use oauth2_types::{
|
use oauth2_types::{
|
||||||
oidc::{ClaimType, Metadata, SubjectType},
|
oidc::{ClaimType, ProviderMetadata, SubjectType},
|
||||||
requests::{Display, GrantType, Prompt, ResponseMode},
|
requests::{Display, GrantType, Prompt, ResponseMode},
|
||||||
scope,
|
scope,
|
||||||
};
|
};
|
||||||
@@ -134,7 +134,7 @@ pub(crate) async fn get(
|
|||||||
|
|
||||||
let prompt_values_supported = Some(vec![Prompt::None, Prompt::Login, Prompt::Create]);
|
let prompt_values_supported = Some(vec![Prompt::None, Prompt::Login, Prompt::Create]);
|
||||||
|
|
||||||
let metadata = Metadata {
|
let metadata = ProviderMetadata {
|
||||||
issuer,
|
issuer,
|
||||||
authorization_endpoint,
|
authorization_endpoint,
|
||||||
token_endpoint,
|
token_endpoint,
|
||||||
@@ -161,7 +161,7 @@ pub(crate) async fn get(
|
|||||||
request_parameter_supported,
|
request_parameter_supported,
|
||||||
request_uri_parameter_supported,
|
request_uri_parameter_supported,
|
||||||
prompt_values_supported,
|
prompt_values_supported,
|
||||||
..Metadata::default()
|
..ProviderMetadata::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
Json(metadata)
|
Json(metadata)
|
||||||
|
|||||||
@@ -22,3 +22,6 @@ itertools = "0.10.3"
|
|||||||
|
|
||||||
mas-iana = { path = "../iana" }
|
mas-iana = { path = "../iana" }
|
||||||
mas-jose = { path = "../jose" }
|
mas-jose = { path = "../jose" }
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
assert_matches = "1.5.0"
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user