protected override async Task <IValueProvider> BuildAsync(SignalRConnectionInfoAttribute attrResolved, IReadOnlyDictionary <string, object> bindingData) { var azureSignalRClient = await Utils.GetAzureSignalRClientAsync(attrResolved.ConnectionStringSetting, attrResolved.HubName, _managerStore).ConfigureAwait(false); bindingData.TryGetValue(HttpRequestName, out var requestObj); var request = requestObj as HttpRequest; var httpContext = request?.HttpContext; if (bindingData.ContainsKey(HttpRequestName) && _securityTokenValidator != null) { var tokenResult = _securityTokenValidator.ValidateToken(request); if (tokenResult.Status != SecurityTokenStatus.Valid) { return(new SignalRConnectionInfoValueProvider(null, _userType, "")); } var signalRConnectionDetail = new SignalRConnectionDetail { UserId = attrResolved.UserId, Claims = azureSignalRClient.GetCustomClaims(attrResolved.IdToken, attrResolved.ClaimTypeList), }; _signalRConnectionInfoConfigurer?.Configure(tokenResult, request, signalRConnectionDetail); var customizedInfo = await azureSignalRClient.GetClientConnectionInfoAsync(signalRConnectionDetail.UserId, signalRConnectionDetail.Claims, httpContext).ConfigureAwait(false); return(new SignalRConnectionInfoValueProvider(customizedInfo, _userType, "")); } var info = await azureSignalRClient.GetClientConnectionInfoAsync(attrResolved.UserId, attrResolved.IdToken, attrResolved.ClaimTypeList, httpContext).ConfigureAwait(false); return(new SignalRConnectionInfoValueProvider(info, _userType, "")); }
protected override Task <IValueProvider> BuildAsync(SignalRConnectionInfoAttribute attrResolved, IReadOnlyDictionary <string, object> bindingData) { var azureSignalRClient = Utils.GetAzureSignalRClient(attrResolved.ConnectionStringSetting, attrResolved.HubName); if (!bindingData.ContainsKey(HttpRequestName) || securityTokenValidator == null) { var info = azureSignalRClient.GetClientConnectionInfo(attrResolved.UserId, attrResolved.IdToken, attrResolved.ClaimTypeList); return(Task.FromResult <IValueProvider>(new SignalRConnectionInfoValueProvider(info, userType, ""))); } var request = bindingData[HttpRequestName] as HttpRequest; var tokenResult = securityTokenValidator.ValidateToken(request); if (tokenResult.Status != SecurityTokenStatus.Valid) { return(Task.FromResult <IValueProvider>(new SignalRConnectionInfoValueProvider(null, userType, ""))); } if (signalRConnectionInfoConfigurer == null) { var info = azureSignalRClient.GetClientConnectionInfo(attrResolved.UserId, attrResolved.IdToken, attrResolved.ClaimTypeList); return(Task.FromResult <IValueProvider>(new SignalRConnectionInfoValueProvider(info, userType, ""))); } var signalRConnectionDetail = new SignalRConnectionDetail { UserId = attrResolved.UserId, Claims = azureSignalRClient.GetCustomClaims(attrResolved.IdToken, attrResolved.ClaimTypeList), }; signalRConnectionInfoConfigurer.Configure(tokenResult, request, signalRConnectionDetail); var customizedInfo = azureSignalRClient.GetClientConnectionInfo(signalRConnectionDetail.UserId, signalRConnectionDetail.Claims); return(Task.FromResult <IValueProvider>(new SignalRConnectionInfoValueProvider(customizedInfo, userType, ""))); }