Advertisement
Guest User

Untitled

a guest
Jan 11th, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.22 KB | None | 0 0
  1. ((IClaimsIdentity)Thread.CurrentPrincipal.Identity).BootstrapToken;
  2.  
  3. var userToken = ((IClaimsIdentity)Thread.CurrentPrincipal.Identity).BootstrapToken;
  4.  
  5. var token = GetActAsToken(userToken);
  6.  
  7. var client = new HttpClient
  8. {
  9. BaseAddress = _baseAddress
  10. };
  11.  
  12. client.SetToken("SAML", token.TokenXml.OuterXml);
  13. var response = client.GetAsync("exchange api").Result;
  14. // or attach token to EWS somehow
  15.  
  16. private SecurityToken GetActAsToken(SecurityToken bootstrapToken)
  17. {
  18. var factory = new WSTrustChannelFactory(
  19. new UserNameWSTrustBinding(SecurityMode.TransportWithMessageCredential),
  20. new EndpointAddress(_stsAddress));
  21. factory.TrustVersion = TrustVersion.WSTrust13;
  22. //some "service account" required in order to issue "act as" tokens
  23. factory.Credentials.UserName.UserName = "middletier";
  24. factory.Credentials.UserName.Password = "abc!123";
  25.  
  26. var rst = new RequestSecurityToken
  27. {
  28. AppliesTo = new EndpointAddress(_serviceAddress),
  29.  
  30. RequestType = RequestTypes.Issue,
  31. KeyType = KeyTypes.Symmetric,
  32. ActAs = new SecurityTokenElement(bootstrapToken)
  33. };
  34.  
  35. var channel = factory.CreateChannel();
  36. var delegationToken = channel.Issue(rst);
  37.  
  38. return delegationToken;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement