簡體   English   中英

在資源服務器中驗證Oauth承載令牌

[英]validate Oauth Bearer Token in Resource Server

我正在嘗試使用oauthAuthorizationServerProvider編寫自己的oauth認證服務器。 客戶端向Authserver請求令牌。 如果客戶端憑據是有效的身份驗證服務器,請提供訪問令牌。 現在,客戶端將令牌與每個請求一起發送給資源服務器。 我無法理解資源服務器將如何驗證由身份驗證服務器生成的令牌。 任何人都可以使用oauthAuthorizationServerProvider給出任何示例代碼。

下面是我嘗試過的實現:

public class AuthorizationServerProvider : OAuthAuthorizationServerProvider
{
    public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
    {
        return Task.FromResult<object>(context.Validated());
    }

    public override Task TokenEndpoint(OAuthTokenEndpointContext context)
    {
        foreach (KeyValuePair<string, string> property in context.Properties.Dictionary)
        {
            context.AdditionalResponseParameters.Add(property.Key, property.Value);
        }
        return Task.FromResult<object>(null);
    }

    public override Task TokenEndpointResponse(OAuthTokenEndpointResponseContext context)
    {
        string path = @"e:\temp\MyTest.txt";
        File.WriteAllText(path, context.AccessToken);
        return base.TokenEndpointResponse(context);
    }
}


public void Configuration(IAppBuilder app)
    {
        ConfigureOAuth(app);
    }

    public void ConfigureOAuth(IAppBuilder app)
    {
        OAuthBearerOptions = new OAuthBearerAuthenticationOptions();

        OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions() { 
            AllowInsecureHttp=true,
            TokenEndpointPath= new PathString("/Token"),
            AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(20),
            Provider = new AuthorizationServerProvider(),

        };
        app.UseOAuthAuthorizationServer(OAuthServerOptions);
        app.UseOAuthBearerAuthentication(OAuthBearerOptions);
    }

現在,我無法使用postman對其進行測試。 如果我的實現對client_credentials授權正確,有人可以幫助我。

PS:我想調試TokenEndpointResponse方法以及startup類。 我怎樣才能做到這一點?

令牌包含授權服務器生成的身份驗證票證。 資源服務器從令牌中提取票證並檢查其是否有效。

該任務由Microsoft.Owin.Security.OAuth dll完成。

授權服務器和資源服務器必須共享用於加密令牌中的身份驗證票證和解密令牌以獲取票證的同一機器密鑰。 您可以將其包含在兩個網站(服務器)的web.config中:

<system.web>
    ...
    <machineKey validationKey="BDE1234FBD71982481D87D815FA0A65B9F5982D123FA96E5672B78ABCD52D58818B479B19FF6D95263E85B0209297E68ABBA7D1E0BD3EABCD5E35742DEA5F2A7" 
        decryptionKey="8E8496D7342EA25ABCDEF6177E04EA00008E359C95E60CD0789456123B9ED2B3" 
        validation="SHA1" decryption="AES" />
    ...
</system.web>

TokenEndpointResponse是在最后執行的方法OAuthAuthorizationServerProvider且僅當其他方法所有的驗證是正確的,那么你就不能調試,直到供應商正常工作。

我在以下Taiseer Joudeh的 帖子中介紹了我的oauth服務器實現,我認為您可以看到閱讀他的解釋並查看代碼的信息。

我希望這可以幫助你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM