I started with the "Individual User Accounts" authentication option when creating a .NET Web API starter template (as described here). The token is being correctly generated, however the ".issued" and ".expires" property are in a non-ISO date format. How do I format them with DateTime.UtcNow.ToString("o")
so it's ISO 8601 compliant?
{
"access_token": "xxx",
"token_type": "bearer",
"expires_in": 1199,
"userName": "[email protected]",
"Id": "55ab2c33-6c44-4181-a24f-2b1ce044d981",
".issued": "Thu, 13 Aug 2015 23:08:11 GMT",
".expires": "Thu, 13 Aug 2015 23:28:11 GMT"
}
The template uses a custom OAuthAuthorizationServerProvider
and provides a hook to add additional properties to the outgoing token (the 'Id' and 'userName' are my props), but I don't see any way to change existing properties.
I did notice that in the override ofTokenEndpoint
, I get a OAuthTokenEndpointContext
that has a properties dictionary with the .issued and .expired keys. Trying to change these values, however, has no effect.
Thanks much in advance.
AuthenticationProperties
class is defined in Microsoft.Owin.Security
namespace in Microsoft.Owin.dll.
The setter of IssuedUtc
property does the following (for ExpiresUtc
is similar):
this._dictionary[".issued"] = value.Value.ToString("r", (IFormatProvider) CultureInfo.InvariantCulture);
As you can see, when setting the IssuedUtc
the .issued
field of dictionary is set too, and with "r" format.
You can try to do the following in the TokenEndPoint
method:
foreach (KeyValuePair<string, string> property in context.Properties.Dictionary)
{
if (property.Key == ".issued")
{
context.AdditionalResponseParameters.Add(property.Key, context.Properties.IssuedUtc.Value.ToString("o", (IFormatProvider) CultureInfo.InvariantCulture));
}
else if (property.Key == ".expires")
{
context.AdditionalResponseParameters.Add(property.Key, context.Properties.ExpiresUtc.Value.ToString("o", (IFormatProvider) CultureInfo.InvariantCulture));
}
else
{
context.AdditionalResponseParameters.Add(property.Key, property.Value);
}
}
I hope it helps.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With