c# - 在 ASP.NET Core 的外部 OAuth 身份验证提供程序中使用 Bearer 令牌
问题描述
这是Startup.cs
来自SignInWithAppleSample:
public void ConfigureServices(IServiceCollection services)
{
// ...
services
.AddAuthentication(options => options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = "/signin";
options.LogoutPath = "/signout";
})
.AddApple(options =>
{
options.ClientId = Configuration["AppleClientId"];
options.KeyId = Configuration["AppleKeyId"];
options.TeamId = Configuration["AppleTeamId"];
options.UsePrivateKey(
(keyId) =>
Environment.ContentRootFileProvider.GetFileInfo($"AuthKey_{keyId}.p8"));
});
// ...
}
public void Configure(IApplicationBuilder app)
{
// ...
app.UseAuthentication();
// ...
}
这是控制器的方法,用于身份验证:
public class AuthenticationController : Controller
{
[HttpPost("~/signin")]
public IActionResult SignIn()
=> Challenge(new AuthenticationProperties { RedirectUri = "/redirect/signin/apple" }, AppleAuthenticationDefaults.AuthenticationScheme);
[HttpGet("~/signout")]
[HttpPost("~/signout")]
public IActionResult SignOut()
=> SignOut(new AuthenticationProperties { RedirectUri = "/redirect/signout/apple" }, CookieAuthenticationDefaults.AuthenticationScheme);
}
它有效,cookie 设置,我可以看到我的声明。
在我的项目中,我不使用内置的 ASP.NET Core,我只需要处理请求/redirect/signin/apple
并将访问令牌、身份令牌等返回给我的客户,并可能在数据库中检查该用户已经注册。客户不想要 cookie,他们只接受不记名令牌。
所以,问题是,我怎样才能得到 Bearer 令牌而不是 cookie?
解决方案
推荐阅读
- python - 如何通过字典中的字典进行索引?
- python - TCP服务器在Python中没有正确接收数据
- sqlite - 如何在 golang 中跟踪对 sqlite3 的更改?
- javascript - 解绑后提交表单
- bash - 如何在 Visual Studio 2019 中使用 git bash 终端配置文件?
- java - 存根方法的 Mockito 单元测试抛出 NullPointerException
- c++ - 在 C++ 模板中发送字符串文字作为参数 - 参数包
- swift - 将 ViewController 添加到 UICollectionviewcell
- javascript - 删除元素后更新行条带化
- oracle - 使用假脱机将表数据导出到 csv 的 Oracle 命令行在数据中包含双引号 (") 时出现问题