gpt4 book ai didi

oauth-2.0 - 如何使用 ServiceStack 作为 OAuth2.0 的资源服务器构建安全的 api?

转载 作者:行者123 更新时间:2023-12-03 08:22:02 25 4
gpt4 key购买 nike

我已经使用 dotnetopenauth 构建了一个 OAuth2.0 授权服务器它将管理身份验证、授权并将 accessToken 分配给调用者。调用者将使用访问 token 访问资源服务器上的 api(webservices)。
如果按照资源服务器中dotnetopenauth提供的示例,使用WCF构建的api可以通过OAuthAuthorizationManager认证。

如果在资源服务器中使用ServiceStack构建我的api,如何构建基于分配的OAuth2.0访问 token 验证传入api请求的身份验证过程?该功能应该类似于 dotnetopenid 示例中的 OAuthAuthorizationManager,而不是基于登录 session 。

最佳答案

只是一些更新

我没有使用 AuthenticateAttributeRequiredRoleAttribute来自 ServiceStack.ServiceInterface .

我创建了 2 个自定义 RequestFilterAttribute替换AuthenticateAttribute提供的功能和 RequiredRoleAttribute .

在每个自定义RequestFilterAttributeExecute方法,我使用 dotnetopenauth 中的方法来验证访问 token 。

//httpReq==req from Execute(IHttpRequest req, IHttpResponse res, object requestDto)

访问 token 验证代码如下,更多信息请引用servicestack和dotnetopenauth的相关文档。 ResourceServer 是来自 dotnetopenauth 的类
HttpRequestBase reqBase = new HttpRequestWrapper((System.Web.HttpRequest)httpReq.OriginalRequest);

var resourceServer = new ResourceServer(new StandardAccessTokenAnalyzer(AuthorizationServerPublicKey, ResourceServerPrivateKey));

IPrincipal ip = null;
resourceServer.VerifyAccess(reqBase, out ip);

如果 ipnull则未通过身份验证,如果未通过 null ,传入的请求是有效的,可以使用 ip检查角色,例如 ip.IsInRole(requiredRole)
我不确定这是否是进行检查的正确方法,但它对我有用。欢迎任何更好的解决方案。

关于oauth-2.0 - 如何使用 ServiceStack 作为 OAuth2.0 的资源服务器构建安全的 api?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10251508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com