Web API授权访问_打开验证

本文关键字:验证 访问 API 授权 Web | 更新日期: 2023-09-27 18:00:59

现在我正在使用OAUTH2.0进行授权。我想做我自己的授权服务器(WEB API(。我有一个Dummy MVC项目来测试这个。我成功地使用"SimpleAuthorizationServerProvider"在服务器(WEB API(中创建了一些访问令牌。我必须调用一些API调用,但应该得到授权。这样我就可以用我的代币发送这个电话了。

https://localhost/Profile?access_token=...

或者可以通过报头发送access_token。从我的角度来看,这一切都还可以。但我需要在服务器端验证这个access_token。我可以从客户端(Dummy MVC项目(获得访问令牌。

private static TokenResponse GetToken()
    {
            var client = new OAuth2Client(new Uri("http://localhost:2727/token"),"client1", "secret");
            var response = client.RequestResourceOwnerPasswordAsync("bob", "bob").Result;
            return response;
    }

但无法从服务器端访问它的创建位置。以及我们可以在哪里验证服务器端的access_token(Web API(。我读了很多书,但还是很困惑。请帮帮我。谢谢

Web API授权访问_打开验证

您不需要担心服务器端的访问令牌。服务器端的访问令牌通过Katana中间件进行解析和验证。如果您需要有关如何创建/使用访问令牌的更多详细信息,请在Katana源中搜索DeserializeTicket和SerializeTicket方法,您会发现这些方法与token一起使用,以序列化/反序列化您在客户端(DummyMVC(上发布的ClaimsIdentity。

无论如何,您使用的是Embedded AuthorizationServer Thinktecture项目中的SimpleAuthorizationServerProvider,该项目是OAuthAuthorizationServiceProvider的包装。我说得对吗?我相信你想验证凭据。在您的情况下,您可以覆盖GrantResourceOwnerCredentials。

    public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
    {
        // validate user credentials (demo!)
        // user credentials should be stored securely (salted, iterated, hashed yada)
        if (context.UserName != context.Password)
        {
            context.Rejected();
            return;
        }
        context.Validated();
    }

最好的办法是看看Thinktecture的例子。