我已经使用以下配置创建了一个IdentityServer项目(B):
new Client
{
ClientId = "ro.client",
AllowedGrantTypes = GrantTypes.ResourceOwnerPassword,
ClientSecrets =
{
new Secret("secret".Sha256())
},
AllowedScopes = { "api1" }
}
我有一个带有自定义登录页面的项目B,当用户输入他/她的用户名和密码时,我将此信息发送到项目B的后端,通过此代码,我可以从身份服务器-项目A中获取令牌:
var client = new HttpClient();
var disco = await client.GetDiscoveryDocumentAsync(_configuration["App:Authority"]);
if (disco.IsError)
{
throw new System.Exception("get info from identity server is failed.");
}
var tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
{
Address = disco.TokenEndpoint,
ClientId = "ro.client",
ClientSecret = "secret",
UserName = "bob",
Password = "Pass123$",
Scope = "api1"
});
var accessToken = tokenResponse.AccessToken;
现在,我要实现的是以某种方式使该用户获得授权并将令牌保存在cookie中,因此,当该用户调用具有authorize属性的另一个动作时,不会将他/她重定向到登录页面。 我该如何实现?