oauth2: "дополнительное утверждение отсутствует в конечной точке userinfo" Microsost open ID Connect - OIDC CLient
Я использую майкрософт OidcClient
для oauth2.0 для учетных записей Google, и я получаю
"ошибка дополнительного утверждения в конечной точке userinfo".
Может ли кто-нибудь предложить, если я что-то упускаю или делаю что-то не так.
public async Task Authorize ()
{
InitializeComponent ();
var providerInformation = new ProviderInformation
{
IssuerName = "accounts.google.com",
AuthorizeEndpoint = "https://accounts.google.com/o/oauth2/auth",
TokenEndpoint = "https://oauth2.googleapis.com/token",
//UserInfoEndpoint = "https://openidconnect.googleapis.com/v1/userinfo",
UserInfoEndpoint = "https://www.googleapis.com/oauth2/v3/tokeninfo",
KeySet = new JsonWebKeySet()
};
var scope = "https://www.googleapis.com/auth/fitness.blood_glucose.read https://www.googleapis.com/auth/fitness.body.read https://www.googleapis.com/auth/fitness.activity.read https://www.googleapis.com/auth/fitness.blood_pressure.read"; https://www.googleapis.com/auth/fitness.blood_glucose.read https://www.googleapis.com/auth/fitness.body.read https://www.googleapis.com/auth/fitness.activity.read https://www.googleapis.com/auth/fitness.blood_pressure.read";
var options = new OidcClientOptions
{
Authority = "https://accounts.google.com/o/oauth2/auth",
ClientId = "xyz",
Scope = scope,
RedirectUri = "com.abc.xyzt:/oauthredirect",
Browser = browser,
ProviderInformation = providerInformation,
//ResponseMode = OidcClientOptions.AuthorizeResponseMode.Redirect,
TokenClientCredentialStyle = IdentityModel.Client.ClientCredentialStyle.AuthorizationHeader
};
_client = new OidcClient(options);
await _client.LoginAsync(new LoginRequest());
}
Я получаю 6 различных претензий, но не получаю JwtClaimTypes.Subject
"sub"
которую ищет библиотека.
Может ли кто-нибудь помочь или подсказать, как решить эту проблему?
1 ответ
Решение
Я нашел решение. Я давал слишком много информации. Вместо того, чтобы позволять библиотеке выяснять отношения на основе конечной точки обнаружения службы.
public async Task Authorize ()
{
var discovery = new DiscoveryPolicy
{
ValidateEndpoints = false,
Authority = "https://accounts.google.com"
};
OidcClientOptions oidcClientOptions = new OidcClientOptions
{
Authority = "https://accounts.google.com",
ClientId = "2345678",
Scope = "https://www.googleapis.com/auth/fitness.body.read",
RedirectUri = "com.abc.xyz",
Browser = IoCRegistry.Locate<IBrowser>(),
ResponseMode = OidcClientOptions.AuthorizeResponseMode.Redirect,
Policy = new Policy
{
Discovery = discovery,
RequireAccessTokenHash = false
}
};
var _client = new OidcClient(oidcClientOptions);
var result = await _client.LoginAsync(new LoginRequest());
}