[OpenID] 关于 .well-known 规范的那些事 (1)

sddtc 于 2018-08-28 发布

Abstract

OpenID Connect 1.0 is a simple identity layer on top of the OAuth 2.0 protocol. It enables Clients to verify the identity of the End-User based on the authentication performed by an Authorization Server, as well as to obtain basic profile information about the End-User in an interoperable and REST-like manner.

OpenID Connect 1.0 是 OAuth 2.0 协议最上层的简单身份验证层. 它使客户端能够根据授权服务器执行的身份验证来验证最终用户的身份, 以及以可操作性和类似 Restful 的方式获取有关最终用户的基本配置文件信息.

Intro

为了使 OpenID Connect 依赖方能够为最终用户使用 OpenID Connect 服务, 依赖方需要知道 OpenID Provider 的位置. OpenID Connect 使用 WebFinger 为最终用户定位 OpenID 提供程序.
一旦 OpenID Provider 被确定, 该 OpenID Provider 的配置信息作为 JSON 文档从 well-known 的位置检索, 还包括有 OAuth2.0 的接口地址.

OpenID Provider Issuer Discovery

OpenID Provider Issuer Discovery 是一个确定 OpenID Provider 位置的过程

关于 GET /.well-known/webfinger?xxxxxx 的一些标准

OpenID Provider Metadata

issuer: 必选项

authorization_endpoint: 必选项

token_endpoint:

userinfo_endpoint: 推荐

jwks_uri: 必选项

registration_endpoint: 推荐

scopes_supported: 推荐

response_types_supported: 必选项

response_modes_supported: 可选项

grant_types_supported : 可选项

acr_values_supported: 可选项

subject_types_supported: 必选项

id_token_signing_alg_values_supported: 必选项

id_token_encryption_alg_values_supported: 可选项

id_token_encryption_enc_values_supported: 可选项

userinfo_signing_alg_values_supported: 可选项

userinfo_encryption_alg_values_supported: 可选项

userinfo_encryption_enc_values_supported: 可选项

request_object_signing_alg_values_supported: 可选项

request_object_encryption_alg_values_supported: 可选项

request_object_encryption_enc_values_supported: 可选项

token_endpoint_auth_methods_supported: 可选项

token_endpoint_auth_signing_alg_values_supported: 可选项

display_values_supported: 可选项

claim_types_supported: 可选项

claims_supported: 推荐

service_documentation: 可选项

claims_locales_supported: 可选项

ui_locales_supported: 可选项

claims_parameter_supported: 可选项

request_parameter_supported: 可选项

request_uri_parameter_supported: 可选项

require_request_uri_registration: 可选项

op_policy_uri: 可选项

op_tos_uri: 可选项