Uh oh!
There was an error while loading. Please reload this page.
This repository was archived by the owner on Jul 14, 2020. It is now read-only.
- Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathSampleAuthProvider.cs
More file actions
Latest commit
64 lines (56 loc) · 2.07 KB
/
Copy pathSampleAuthProvider.cs
File metadata and controls
64 lines (56 loc) · 2.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Configuration;
usingSystem.Linq;
usingSystem.Security.Claims;
usingSystem.Threading.Tasks;
usingSystem.Web;
usingMicrosoft.Identity.Client;
usingMicrosoft.Owin.Security;
usingMicrosoft.Owin.Security.OpenIdConnect;
usingMSGraphCalendarViewer.TokenStorage;
namespaceMSGraphCalendarViewer.Helpers
{
publicsealedclassSampleAuthProvider:IAuthProvider
{
privatestringredirectUri=ConfigurationManager.AppSettings["ida:RedirectUri"];
privatestringappId=ConfigurationManager.AppSettings["ida:AppId"];
privatestringappSecret=ConfigurationManager.AppSettings["ida:AppSecret"];
privatestringscopes=ConfigurationManager.AppSettings["ida:GraphScopes"];
privateSessionTokenCachetokenCache{get;set;}
privatestaticreadonlySampleAuthProviderinstance=newSampleAuthProvider();
privateSampleAuthProvider(){}
publicstaticSampleAuthProviderInstance
{
get
{
returninstance;
}
}
publicasyncTask<string>GetUserAccessTokenAsync()
{
stringsignedInUserID=ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value;
HttpContextWrapperhttpContext=newHttpContextWrapper(HttpContext.Current);
TokenCacheuserTokenCache=newSessionTokenCache(signedInUserID,httpContext).GetMsalCacheInstance();
ConfidentialClientApplicationcca=newConfidentialClientApplication(
appId,
redirectUri,
newClientCredential(appSecret),
userTokenCache,
null);
try
{
varaccounts=awaitcca.GetAccountsAsync();
AuthenticationResultresult=awaitcca.AcquireTokenSilentAsync(scopes.Split(newchar[]{' '}),accounts.First());
returnresult.AccessToken;
}
catch(Exception)
{
HttpContext.Current.Request.GetOwinContext().Authentication.Challenge(
newAuthenticationProperties(){RedirectUri="/"},
OpenIdConnectAuthenticationDefaults.AuthenticationType);
thrownewException();
}
}
}
}