public async Task <string> Get( bool ccaPerRequest = true, Flow flow = Flow.S2S, int userForObo = 1, TID tenantId = TID.A, Scope scope = Scope.S1, bool staticL1 = false, bool useL2 = true) { char c = tenantId.ToString().ToCharArray()[0]; var tid = new string(Enumerable.Repeat(c, 16).ToArray()); IConfidentialClientApplication cca = GetOrCreateCCA(ccaPerRequest, staticL1, useL2); AuthenticationResult res; if (flow == Flow.S2S) { res = await cca.AcquireTokenForClient(new[] { scope.ToString() }) .WithAuthority($"https://login.microsoftonline.com/{tid}") .ExecuteAsync().ConfigureAwait(false); } else { var user = $"user_{userForObo}"; // must be in this format. MSAL will use {user} as the object id string fakeUpstreamToken = $"upstream_token_{user}"; res = await cca.AcquireTokenOnBehalfOf(new[] { scope.ToString() }, new UserAssertion(fakeUpstreamToken)) .WithAuthority($"https://login.microsoftonline.com/{tid}") .ExecuteAsync() .ConfigureAwait(false); } return(res.AuthenticationResultMetadata.TokenSource.ToString()); }
void Reader_TagInventoryEvent(object sender, CSLibrary.Events.OnAsyncCallbackEventArgs e) { // Check Callback Type if (e.type != CSLibrary.Constants.CallbackType.TAG_RANGING) { return; } UInt32 TID, TID1; string EPC; UInt16[] tagdata = e.info.epc.ToUshorts(); // Check TID code (exclude if scan temp) //TID = (UInt32)((tagdata[e.info.pc.EPCLength] << 16) | tagdata[e.info.pc.EPCLength + 1]) & 0xffffffc0U; //if (TID != 0xe2806e80U && TID != 0xe2806e8fU && TID != 0xe2806800U) // return; TID = (UInt32)((tagdata[e.info.pc.EPCLength] << 16) | tagdata[e.info.pc.EPCLength + 1]); TID1 = TID & 0xffffffc0U; if (TID1 != 0xe2806e80U && TID1 != 0xe2806e8fU && TID1 != 0xe2806800U) { return; } EPC = e.info.epc.ToString().Substring(0, (int)(e.info.pc.EPCLength * 4)) + ":" + TID.ToString("X8"); BeginInvoke((System.Threading.ThreadStart) delegate() { lock (listView1) { int cnt; for (cnt = 0; cnt < listView1.Items.Count; cnt++) { if (listView1.Items[cnt].SubItems[1].Text == EPC) { break; } } if (cnt == listView1.Items.Count) { ListViewItem ins = new ListViewItem((listView1.Items.Count + 1).ToString()); ins.SubItems.Add(EPC); if ((tagdata[e.info.pc.EPCLength + 2] & 0x0800) != 0x0000) { ins.SubItems.Add("1"); } else { ins.SubItems.Add("0"); } if ((tagdata[e.info.pc.EPCLength + 2] & 0x0040) != 0x0000) { ins.SubItems.Add("1"); } else { ins.SubItems.Add("0"); } if ((tagdata[e.info.pc.EPCLength + 2] & 0x0001) != 0x0000) { ins.SubItems.Add("1"); } else { ins.SubItems.Add("0"); } listView1.Items.Add(ins); } else { if ((tagdata[e.info.pc.EPCLength + 2] & 0x0800) != 0x0000) { listView1.Items[cnt].SubItems[2].Text = "1"; } else { listView1.Items[cnt].SubItems[2].Text = "0"; } if ((tagdata[e.info.pc.EPCLength + 2] & 0x0040) != 0x0000) { listView1.Items[cnt].SubItems[3].Text = "1"; } else { listView1.Items[cnt].SubItems[3].Text = "0"; } if ((tagdata[e.info.pc.EPCLength + 2] & 0x0001) != 0x0000) { listView1.Items[cnt].SubItems[4].Text = "1"; } else { listView1.Items[cnt].SubItems[4].Text = "0"; } } } }); }