Com este post, quero abrir um tópico de artigo dedicado ao IdentityServer4. Começamos com os conceitos básicos.
O protocolo de autenticação mais promissor no momento é o OpenID Connect , e o protocolo de autenticação (concedendo acesso) é o OAuth 2.0 . O IdentityServer4 implementa esses dois protocolos. É otimizado para problemas de segurança comuns .
O OpenID Connect é um padrão de protocolo e autenticação, não fornece acesso a recursos (API da Web), mas como foi desenvolvido sobre o protocolo de autorização OAuth 2.0 , permite obter parâmetros de perfil de usuário como se você tivesse acesso ao recurso UserInfo .
O JWT (JSON Web Token) é um padrão da Web que define um método para transmitir dados do usuário no formato JSON em formato criptografado.
OAuth 2.0 (RFC 6749) é um padrão de protocolo e autorização. Ele permite que os aplicativos acessem recursos seguros, como a API da Web.
Dê uma olhada no diagrama de acesso a um recurso protegido e lide com as principais etapas e a terminologia aceita:

. — . — Web API.
User , , . . User ( ) — , , , (username) (password);
IdentityServer4 (client_id, client_secret), (username, password) grant_type scope. ( ).
OAuth 2.0 , , . client_id client_secret.
lient_id — , IdentityServer4 .
client_secret IdentityServer4. API. IdentityServer4 .
, IdentiryServer4 access- ( ) (refresh-). . , .
Web API, . 401, 403 498, , , .
, Web API .
IdentityServer4 IdentityServer4 identity-, access- refresh-.
- identity- ( ) — . , . .
- access- ( ) — API ( ) .
- refresh- ( ) — , .
:
Authenticatation Server Url — . URL-.
Resource Url — URL- , , , .
POST IdentityServer4
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json',
'Expect': '100-continue'
:
'grant_type' : 'password',
'username' : login,
'password' : password,
'scope' : 'scope',
'client_id' : 'client_id',
'client_secret' : '{client_secret}'
username, password, client_id client_secret . :
grant_type — . , , API. password, OAuth 2.0 ( ).
OAuth 2.0 :
- (authorization code). , .. (server-side applications), ;
- (implicit). -, ;
, :
- (resource owner). , . , . ,
OAuth 2.0. - . API. , , URI , , , API .
scope — . . , , , . .. scope scope . scope (, )