我有一个MT应用程序,授权用户在我的多租户应用程序。当用户登录时,我将验证id令牌的发行者是否是来自AzureAd的已知租户。使用房客的GUID。
像一种魅力:D
现在,一个客户希望我通过调用通过APIM公开的API,对他们的源系统执行一些“写回”操作。
我认为这就是OIDC/oAuth的全部内容,但我无法找到任何关于如何做到这一点的好例子。
我要解决的第一件事是如何获得访问令牌。
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.AzureAD.UI;
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Builder;
services.AddAuthentication(AzureADDefaults.AuthenticationScheme).AddAzureAD(o =>
{
o.OpenIdConnectSchemeName = AzureADDefaults.OpenIdScheme;
o.Instance = "https://login.microsoftonline.com/";
o.TenantId = "organizations";
o.CallbackPath = "/signin-oidc";
OnTokenValidated = e =>
{
//This can not be the way to do it. but for now.
var accestoken = e.SecurityToken.RawData; //This is the AccessToken
目前,我正在将访问令牌存储在cookie中,这可能不是最好的方法,我已经看到一些文档提到了SaveToken选项,但似乎不是AddAzureAD扩展选项的一部分。
在此之后,使用授权头中的访问令牌调用APIM应该能做到这一点吗?还是我需要在apim中注册一些应用程序?
谁都行!
我在黑暗中摸索:
发布于 2021-05-13 03:03:53
在此之后,使用授权头中的访问令牌调用APIM应该能做到这一点吗?还是我需要在apim中注册一些应用程序?
正如您在注释中所说的,您得到的是身份令牌,而不是访问令牌。您需要修改代码并使用HttpContext.GetTokenAsync("access_token")
获取访问令牌。
此外,您不需要在apim中注册应用程序,因为您已经有了一个多租户应用程序,您只需要将它添加到客户租户,我认为您已经这样做了。
最后,顺便说一句,不要忘记添加政策。
https://stackoverflow.com/questions/67498668
复制相似问题