我正在尝试使用带有OAuth应用程序流的SwashBuckle.AspNetCore 4.1.根据谷歌搜索,我的设置如下所示:
options.AddSecurityDefinition("oauth2", new OAuth2Scheme
{
Type = "oauth2",
Flow = "application",
TokenUrl = "/token",
});这为我提供了带有client_id和client_secret文本框的Authorize对话框,但是当我查看fiddler中的请求时,我看到:
{“client_id”:“client_id字段是必填字段。”,“client_secret”:“client_secret字段是必填字段。”}
对于" password“流,它同时显示用户名/密码和client_id、client_secret文本框,并在填充的密码对中传递,但它始终传递密码授予,这对于client_id/secret是不正确的。
发布于 2019-10-18 22:16:38
如果你检查Fiddler,你会看到client_id和client_secret在授权的请求报头中。这将是字符串Basic,然后是您的用户名和密码,64位字符串编码。
就像这样
Authorization: Basic MTIzOmFiYw==您的令牌方法需要执行以下操作
string authHeader = Request.Headers["Authorization"];
if (authHeader != null && authHeader.StartsWith("Basic"))
{
string encodedUsernamePassword = authHeader.Substring("Basic ".Length).Trim();
Encoding encoding = Encoding.GetEncoding("iso-8859-1");
string usernamePassword = encoding.GetString(Convert.FromBase64String(encodedUsernamePassword));
int seperatorIndex = usernamePassword.IndexOf(':');
var clientId = usernamePassword.Substring(0, seperatorIndex);
var clientSecret = usernamePassword.Substring(seperatorIndex + 1);
}https://stackoverflow.com/questions/55367131
复制相似问题