微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Auth0 .NetCore Swagger 进行基本用户名/密码身份验证

如何解决使用 Auth0 .NetCore Swagger 进行基本用户名/密码身份验证

我有一个 API,它将向公众公开,它使用 Auth0 进行身份验证并启用 swagger 来查看/记录端点。

我在 Auth0 中配置了 2 个应用程序

  • Web(用于对访问我的 UI 的用户进行身份验证,这会调用 API 并且工作正常。)
  • API(用于验证我的 API,swagger 目前正在使用它来获取不记名令牌)

我知道这是错误的,因为每个来到 Swagger 的人都可以访问所有内容

所以我需要创建一个控制器端点 /Authentication?username=a&password=b,我可以在其中获取用户名、散列密码并将其发送到 Auth0、获取令牌并将其返回给用户。 现在用户可以使用这个令牌和授权招摇。 我想让其他第三方应用程序访问此 API。所以我需要一个端点,在那里他们可以点击并获取令牌并进行其他 API 调用

下面给出了我的示例代码,但显然无法正常工作。

[HttpGet]
public async Task<string> Login(string username,string password)
{
    var stringContent = new FormUrlEncodedContent(new[]
      {
        new keyvaluePair<string,string>("username",username),new keyvaluePair<string,string>("password",password),string>("client_id",this.Configuration["Auth0:ClientId"]),string>("audience",this.Configuration["Auth0:Audience"]),string>("connection","Username-Password-Authentication"),string>("scope","openid profile email"),string>("response_type","code"),string>("redirect_uri","https://localhost:5000"),});
    this.client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type","application/json; charset=utf-8");

    dynamic response = await this.client.PostAsync($"{this.Configuration["Auth0:Domain"]}/usernamepassword/login",stringContent).Result.Content.ReadAsstringAsync();
    dynamic result = JObject.Parse(response);
    return result.access_token;
}

非常感谢任何帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。