@@ -118,9 +118,9 @@ The following secret validators are part of Duende IdentityServer:
118118
119119## Shared Secrets
120120
121- Shared secrets is by far the most common technique for authenticating clients.
121+ Using shared secrets is by far the most common technique for authenticating clients.
122122
123- From a security point of view they have some shortcomings
123+ From a security point of view, they have some shortcomings:
124124
125125* the shared secrets must be transmitted over the network during authentication
126126* they should not be persisted in clear text to reduce the risk of leaking them
@@ -152,7 +152,7 @@ var compromisedSecret = new Secret("just for demos, not prod!".Sha256());
152152
153153### Authentication Using A Shared Secret
154154
155- You can either send the client id/secret combination as part of the POST body::
155+ You can either send the client id/secret combination as part of the POST body:
156156
157157``` http request
158158POST /connect/token
@@ -167,7 +167,7 @@ Content-type: application/x-www-form-urlencoded
167167 redirect_uri=https://myapp.com/callback
168168```
169169
170- ...or as a basic authentication header::
170+ ...or as a basic authentication header:
171171
172172``` http request
173173POST /connect/token
@@ -209,7 +209,7 @@ The OpenID Connect specification recommends a client authentication method based
209209instead of transmitting the shared secret over the network, the client creates a JWT and signs it with its private key.
210210Your IdentityServer only needs to store the corresponding key to be able to validate the signature.
211211
212- The technique is described [ here] ( https://openid.net/specs/openid-connect-core-1_0.html#clientauthentication ) and is
212+ The technique is described [ here] ( https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication ) and is
213213based on the OAuth JWT assertion specification [ (RFC 7523)] ( https://tools.ietf.org/html/rfc7523 ) .
214214
215215### Setting Up A Private Key JWT Secret
@@ -230,7 +230,7 @@ var client = new Client
230230 Type = IdentityServerConstants .SecretTypes .X509CertificateBase64 ,
231231
232232 Value = " MIID...xBXQ="
233- }
233+ },
234234 new Secret
235235 {
236236 // JWK formatted RSA key
@@ -327,15 +327,14 @@ static async Task<TokenResponse> RequestTokenAsync(SigningCredentials credential
327327}
328328```
329329
330- See [ here] ( /identityserver/samples/basics#jwt-based-client-authentication ) for a sample for using JWT-based
331- authentication.
330+ See [ here] ( /identityserver/samples/basics#jwt-based-client-authentication ) for a sample for using JWT-based authentication.
332331
333332### Using ASP.NET Core
334333
335334The OpenID Connect authentication handler in ASP.NET Core allows for replacing a static client secret with a dynamically
336335created client assertion.
337336
338- This is accomplished by handling the various events on the handler. We recommend to encapsulate the event handler in a
337+ You can achieve this by handling the various events on the handler. We recommend encapsulating the event handler in a
339338separate type. This makes it easier to consume services from DI:
340339
341340``` csharp
@@ -384,7 +383,7 @@ JWT-based authentication (and signed authorize requests) in ASP.NET Core.
384383
385384## Strict Audience Validation
386385
387- Private key JWT have a theoretical vulnerability where a Relying Party trusting multiple
386+ Private key JWTs have a theoretical vulnerability where a Relying Party trusting multiple
388387OpenID Providers could be attacked if one of the OpenID Providers is malicious or compromised.
389388
390389The attack relies on the OpenID Provider setting the audience value of the authentication JWT
0 commit comments