/// <summary> /// Stores the device authorization request. /// </summary> /// <param name="userCode">The user code.</param> /// <param name="data">The data.</param> /// <returns></returns> public async Task <string> StoreDeviceAuthorizationAsync(string userCode, DeviceCode data) { var deviceCode = await _handleGenerationService.GenerateAsync(); await _store.StoreDeviceAuthorizationAsync(deviceCode.Sha256(), userCode.Sha256(), data); return(deviceCode); }
/// <summary> /// Stores the device authorization request. /// </summary> /// <param name="userCode">The user code.</param> /// <param name="data">The data.</param> /// <returns></returns> public async Task <string> StoreDeviceAuthorizationAsync(string userCode, DeviceCode data) { using var activity = Tracing.StoreActivitySource.StartActivity("DefaultDeviceFlowCodeService.SendLogoutNotifStoreDeviceAuthorization"); var deviceCode = await _handleGenerationService.GenerateAsync(); await _store.StoreDeviceAuthorizationAsync(deviceCode.Sha256(), userCode.Sha256(), data); return(deviceCode); }
public async Task StoreDeviceAuthorizationAsync() { await _deviceFlowStore.StoreDeviceAuthorizationAsync( "DeviceCode-Test1", "UserCode-Test1", new DeviceCode { ClientId = "ClientId1", AuthorizedScopes = new string[] { "s1", "s2" }, IsAuthorized = true, Lifetime = 42, RequestedScopes = new string[] { "rs1" }, Subject = new ClaimsPrincipal( new[] { new ClaimsIdentity(new[] { new Claim(JwtClaimTypes.Subject, "sid1") }) } ) } ); void Check(DeviceCode deviceCode) { deviceCode.ClientId.ShouldBe("ClientId1"); deviceCode.AuthorizedScopes.ShouldNotBeNull(); deviceCode.AuthorizedScopes.Count().ShouldBe(2); deviceCode.AuthorizedScopes.ShouldContain("s1"); deviceCode.AuthorizedScopes.ShouldContain("s2"); deviceCode.IsAuthorized.ShouldBeTrue(); deviceCode.Lifetime.ShouldBe(42); deviceCode.RequestedScopes.ShouldNotBeNull(); deviceCode.RequestedScopes.Count().ShouldBe(1); deviceCode.RequestedScopes.ShouldContain("rs1"); deviceCode.Subject.ShouldNotBeNull(); deviceCode.Subject.Claims.ShouldContain(x => x.Type == JwtClaimTypes.Subject && x.Value == "sid1"); } Check(await _deviceFlowStore.FindByUserCodeAsync("UserCode-Test1")); Check(await _deviceFlowStore.FindByDeviceCodeAsync("DeviceCode-Test1")); }
public async Task StoreDeviceCode(string deviceCode, string userCode, [FromBody] DeviceCode data) { await _store.StoreDeviceAuthorizationAsync(deviceCode, userCode, data); }