看來你需要OWIN OAuth 2.0授權服務器。這是Microsoft擴展添加所需的功能。它會創建一個可以用來獲取令牌的oauth端點(例如/令牌)。你沒有直接的控制器,但有一個特殊的OWIN類連接到它,你需要擴展來添加你需要的任何東西。
你可以找到更多的細節here和here。
這是一個有點長的閱讀,但它的作品,我用它在一些項目。
下面是一個簡單的例子,你可以怎麼做(GrantResourceOwnerCredentials
是你最重要的方法):
public class SimpleAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
// Add CORS e.g.
context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
using (AuthRepository _repo = new AuthRepository())
{
IdentityUser user = await _repo.FindUser(context.UserName, context.Password);
if (user == null)
{
context.SetError("invalid_grant", "The user name or password is incorrect.");
return;
}
}
var identity = new ClaimsIdentity(context.Options.AuthenticationType);
identity.AddClaim(new Claim("sub", context.UserName));
identity.AddClaim(new Claim("role", "user"));
context.Validated(identity);
}
}
謝謝你的建議。這裏提供了標準的ASP.NET身份鏈接。果然,我已經讀了很多。但沒有一個提到令牌入口點重載。因此我的問題。當然,OWIN OAuth 2.0授權服務器已經包含在Microsoft模板中。問題是,是否有可能以簡單的方式重載它,以攔截令牌創建功能? –
這取決於你想要達到什麼目的:向令牌添加一些額外的信息? (簡單),添加你的身份驗證? (簡單),更改令牌格式? (不知道) –
我想到了一些最簡單的事情,例如添加用戶通過WEB API登錄的日誌記錄,或者可能對用戶進行一些額外的驗證,例如,通過請求IP等等。如果可以用幾行代碼完成,那將會很好。如果我必須編寫自己的授權服務器來實現這一點,那絕對不值得。 –