使用C#刷新MS Graph的身份验证令牌

法鲁克·诺拉莫多夫(Farrukh Normuradov)

如何使用Microsoft Graph .NET客户端库或其他使用C#刷新Microsoft Graph的身份验证令牌

我目前正在做的是将令牌保留在静态类中:

public class TokenKeeper
{
    public static string token = null;
    public static string AcquireToken()
    {
        if (token == null || token.IsEmpty())
        {
            throw new Exception("Authorization Required.");
        }
        return token;
    }
    public static void Clear()
    {
        token = null;
    }
}

我在启动类中填写令牌:

public partial class Startup
{
    private static string AppKey = CloudConfigurationManager.GetSetting("ida:Password");
    private static string aadInstance = CloudConfigurationManager.GetSetting("ida:AADInstance");
    private static string TenantName = CloudConfigurationManager.GetSetting("ida:Tenant");
    private static string Authority = String.Format(CultureInfo.InvariantCulture, aadInstance, TenantName);
    private static string graphResourceId = CloudConfigurationManager.GetSetting("ida:GraphUrl");
    private BpContext db = new BpContext();

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

    public void ConfigureAuth(IAppBuilder app)
    {
        string ClientId = CloudConfigurationManager.GetSetting("ida:ClientID");
        string Authority = "https://login.microsoftonline.com/common/";

        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

        app.UseCookieAuthentication(new CookieAuthenticationOptions());

        app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions
            {
                ClientId = ClientId,
                Authority = Authority,
                Scope = "User.ReadBasic.All",
                //Details omitted
                    AuthorizationCodeReceived = (context) =>
                    {
                        var code = context.Code;
                        // Create a Client Credential Using an Application Key
                        ClientCredential credential = new ClientCredential(ClientId, AppKey);
                        string userObjectID = context.AuthenticationTicket.Identity.FindFirst(
                            "http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
                        AuthenticationContext authContext = new AuthenticationContext(Authority, new NaiveSessionCache(userObjectID));
                        AuthenticationResult result = authContext.AcquireTokenByAuthorizationCode(
                            code, new Uri(HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Path)), credential, graphResourceId);                    
                        TokenKeeper.token = result.AccessToken;

                        return Task.FromResult(0);
                    }
                     //Details omitted
                }
            });
    }
}

我还会在“退出”上清除令牌。

斯里拉姆·达纳塞斯卡兰(Sriram Dhanasekaran)

AuthenticationResult对象包含访问令牌和刷新令牌。因此,刷新令牌也可以类似于访问令牌一样保留在TokenKeeper中。当访问令牌过期时(由AuthenticationResult.ExpiresOn指示),将刷新令牌与AuthenticationContext.AcquireTokenByRefreshToken方法一起使用以获取新的访问令牌。

如果您不想显式跟踪刷新令牌,请参考ADAL缓存以了解ADAL库如何为您完成此任务。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在事件中使用身份验证令牌

来自分类Dev

使用“ SharedPreferences”存储身份验证令牌

来自分类Dev

使用身份验证令牌保护JSON

来自分类Dev

在 Restful C# 中使用身份验证令牌

来自分类Dev

使用RxJava刷新透明身份验证令牌

来自分类Dev

iOS使用刷新的身份验证令牌处理请求

来自分类Dev

如果帐户令牌中的身份验证令牌已过期,请使用刷新令牌

来自分类Dev

强制Google通过python社交身份验证刷新令牌

来自分类Dev

AWS Cognito身份验证令牌如何刷新

来自分类Dev

强制Google通过python社交身份验证刷新令牌

来自分类Dev

使用令牌通过令牌进行身份验证,如果令牌失败则通过会话进行身份验证?

来自分类Dev

使用令牌通过令牌进行身份验证,如果令牌失败,则通过会话进行身份验证?

来自分类Dev

如何使用身份验证令牌对 oracle 云 ipnetwork API 进行身份验证?

来自分类Dev

在基于令牌的身份验证中使用刷新令牌是否安全?

来自分类Dev

在asp.net vnext上使用承载令牌身份验证刷新令牌

来自分类Dev

使用Python社交身份验证仅获取令牌

来自分类Dev

使用ASP.net API的承载令牌身份验证

来自分类常见问题

使用令牌向GitHub进行身份验证

来自分类Dev

使用设计令牌身份验证时出现问题

来自分类Dev

Xpages使用身份验证令牌调用Rest服务

来自分类Dev

Github使用2因子身份验证创建令牌

来自分类Dev

如何使用authenticate指令执行基于令牌的身份验证?

来自分类Dev

使用Dapper micro-orm的基于令牌的身份验证

来自分类Dev

使用'Bearer'身份验证令牌来响应本机映像

来自分类Dev

使用Jwt的基于令牌的身份验证无法授权

来自分类Dev

如何使用令牌对REST服务进行身份验证

来自分类Dev

Node.js-如何使用访问/身份验证令牌?

来自分类Dev

如何使用 Facebook 令牌进行身份验证?

来自分类Dev

在多个 RESTheart 实例中使用身份验证令牌

Related 相关文章

  1. 1

    在事件中使用身份验证令牌

  2. 2

    使用“ SharedPreferences”存储身份验证令牌

  3. 3

    使用身份验证令牌保护JSON

  4. 4

    在 Restful C# 中使用身份验证令牌

  5. 5

    使用RxJava刷新透明身份验证令牌

  6. 6

    iOS使用刷新的身份验证令牌处理请求

  7. 7

    如果帐户令牌中的身份验证令牌已过期,请使用刷新令牌

  8. 8

    强制Google通过python社交身份验证刷新令牌

  9. 9

    AWS Cognito身份验证令牌如何刷新

  10. 10

    强制Google通过python社交身份验证刷新令牌

  11. 11

    使用令牌通过令牌进行身份验证,如果令牌失败则通过会话进行身份验证?

  12. 12

    使用令牌通过令牌进行身份验证,如果令牌失败,则通过会话进行身份验证?

  13. 13

    如何使用身份验证令牌对 oracle 云 ipnetwork API 进行身份验证?

  14. 14

    在基于令牌的身份验证中使用刷新令牌是否安全?

  15. 15

    在asp.net vnext上使用承载令牌身份验证刷新令牌

  16. 16

    使用Python社交身份验证仅获取令牌

  17. 17

    使用ASP.net API的承载令牌身份验证

  18. 18

    使用令牌向GitHub进行身份验证

  19. 19

    使用设计令牌身份验证时出现问题

  20. 20

    Xpages使用身份验证令牌调用Rest服务

  21. 21

    Github使用2因子身份验证创建令牌

  22. 22

    如何使用authenticate指令执行基于令牌的身份验证?

  23. 23

    使用Dapper micro-orm的基于令牌的身份验证

  24. 24

    使用'Bearer'身份验证令牌来响应本机映像

  25. 25

    使用Jwt的基于令牌的身份验证无法授权

  26. 26

    如何使用令牌对REST服务进行身份验证

  27. 27

    Node.js-如何使用访问/身份验证令牌?

  28. 28

    如何使用 Facebook 令牌进行身份验证?

  29. 29

    在多个 RESTheart 实例中使用身份验证令牌

热门标签

归档