当前位置: 首页 > 知识库问答 >
问题:

azure ad b2c应用程序注册的差异

许丁雷
2023-03-14

步骤

  1. 手动创建应用程序并添加了一些权限(application.readwrite.all、application.readwrite.ownedby、directory.readwrite.all、policy.readwrite.trustframework.trustframeworkkeyset.read.all、trustframeworkkeyset.readwrite.all、user.read.all)
  2. 然后我使用上面创建的应用程序客户端id和客户端机密(用于调用graph api)编写下面的脚本。
$tenantid ='xxxxxxxxxxxxxxxx'
$appid='xxxxxxxxxxxxxxxxxxxx'
$appsecret = 'xxxxxxxxxxxxxxxx'  
$Uri = 'https://login.microsoftonline.com/' + $tenantid +'/oauth2/v2.0/token'
    
$Form = @{
        client_id     = $appid
        scope         = 'https://graph.microsoft.com/.default'
        client_secret = $appsecret
        grant_type    = 'client_credentials'
      }
$Result = Invoke-RestMethod -Uri $Uri -Method Post -Form $Form -contenttype 'application/json'
$access_token=$Result.access_token
$url = 'https://graph.microsoft.com/v1.0/applications'
$headers = @{Authorization = "Bearer $access_token" }
$method = "Post"
$json = $bodyjsonstring | ConvertFrom-Json | ConvertTo-Json -Depth 10
$response = Invoke-RestMethod -Uri $url -Body $json -Method $method -Headers $headers -contenttype 'application/json'
$appId = $response.appId
$urlforappsp = 'https://graph.microsoft.com/v1.0/serviceprincipals'
  $dataforsp = '{
  "appId": "' + $appId + '",
}'
  $headers = @{Authorization = "Bearer $access_token" }
  $method = "Post"
  $json = $bodyjsonstring | ConvertFrom-Json | ConvertTo-Json -Depth 10
  # Write-Host $json
  $response = Invoke-RestMethod -Uri $urlforappsp -Body $json -Method $method -Headers $headers -contenttype 'application/json'
  $responsesp = HTTP_POST_CALL -bearer_token $accesstoken -url $urlforappsp -bodyjsonstring $dataforsp

4.然后我调用链接

    null
html prettyprint-override">{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#applications/$entity",
    "id": "xxxxxxxxx",
    "deletedDateTime": null,
    "appId": "xxxxxxxx",
    "applicationTemplateId": null,
    "createdDateTime": "2020-12-14T18:23:26Z",
    "displayName": "userapp",
    "description": null,
    "groupMembershipClaims": null,
    "identifierUris": [],
    "isDeviceOnlyAuthSupported": null,
    "isFallbackPublicClient": null,
    "notes": null,
    "optionalClaims": null,
    "publisherDomain": "xxxxxxxxxxxx",
    "signInAudience": "AzureADMyOrg",
    "tags": [],
    "tokenEncryptionKeyId": null,
    "verifiedPublisher": {
        "displayName": null,
        "verifiedPublisherId": null,
        "addedDateTime": null
    },
    "spa": {
        "redirectUris": []
    },
    "defaultRedirectUri": null,
    "addIns": [],
    "api": {
        "acceptMappedClaims": null,
        "knownClientApplications": [],
        "requestedAccessTokenVersion": null,
        "oauth2PermissionScopes": [],
        "preAuthorizedApplications": []
    },
    "appRoles": [],
    "info": {
        "logoUrl": null,
        "marketingUrl": null,
        "privacyStatementUrl": null,
        "supportUrl": null,
        "termsOfServiceUrl": null
    },
    "keyCredentials": [],
    "parentalControlSettings": {
        "countriesBlockedForMinors": [],
        "legalAgeGroupRule": "Allow"
    },
    "passwordCredentials": [],
    "publicClient": {
        "redirectUris": []
    },
    "requiredResourceAccess": [],
    "web": {
        xxxxx
        }
    }
}
 requiredResourceAccess and approle are empty.then how do i call 

“/approleassignedto”

共有1个答案

乐正宏深
2023-03-14

我试图调用Update application graph api,通过更改RequiredResourceAccess属性集来修改权限类型。虽然它成功了,并且确实在Azure portal中将权限类型更改为application permission,但它也将权限名称更改为ID。,所以我不建议你使用这种方法。

同时,我发现您在自动执行权限时调用https://graph.microsoft.com/v1.0/oauth2PermissionGrantsapi。此api通常用于分配委托权限,因此如果您正在分配应用程序权限,请不要使用它。

最简单的方法是调用appRoleAssignment graph api,它将直接为您的应用程序分配应用程序权限。

门户->清单->RequiredResourceAccess中导航到广告应用程序,获取resourceAppId和id,将id标记为approleID

 类似资料:
  • 作者:陈希章 发表于2017年3月22日 在此前的文章中,我给大家介绍了分别用Graph 浏览器以及第三方工具(POSTMAN)快速体验Microsoft Graph的功能,其中有一个重要的环节就是,开发人员需要访问Microsoft Graph的话,其实是事先需要注册一个应用程序的。Graph 浏览器是特例,因为这个应用程序是微软官方注册好的。而大家在POSTMAN这篇文章中已经看到我注册的自定

  • 作者:陈希章 发表于 2017年3月22日 上一篇 介绍了Microsoft Graph应用程序的一些概念,以及目前还比较普遍的Azure AD 1.0应用程序的注册方式。但正如我多次提到的那样,虽然目前功能还在不断完善,但Azure AD 2.0会逐渐成为主流,它有如下几个优势 Azure AD 2.0 应用程序,既支持访问工作或学校账号,也支持访问个人账号的资源。 注册Azure AD 2.0

  • 小程序 App App(Object) App() 函数用来注册一个小程序。接受一个 Object 参数, App() 必须在 app.js 中调用,且只能调用一次。 Object参数说明: 属性 类型 描述 触发时机 onLaunch Function 生命周期回调—监听小程序初始化 小程序初始化完成时触发(全局只触发一次) onShow Function 生命周期回调—监听小程序显示 小程序启

  • 我正试图在Tomcat 7.0.34.0上使用Servlet3.0应用程序类开发一个RESTful webapp,但似乎没有任何工作。我对以前的应用程序使用Jersey ServletContainer方法并在web.xml中声明所有REST服务没有任何问题。 我的当前应用程序子类: 和web服务: 当我尝试部署应用程序时,Tomcat告诉我上下文已重新加载: web应用程序本身已经部署(我可以访

  • 作者:陈希章 发表于 2017年3月23日 中国版Office 365是由世纪互联进行运营的一个云服务,单纯从技术角度来看的话,它基本保持了与国际版的同步。但是由于两个版本本质上是完全独立的,其中最关键的就是账号系统是分开的,所以在使用角度,不管是直接用户还是开发人员,会有些小小的差异。 就应用程序注册这件事情而言,中国版Office 365的操作方式有如下的特点: 注册地址不一样,这个能理解 目

  • 我有一个web应用程序,它将从jar文件动态加载其资源。 我必须如何重新编写加载和注册资源并启动服务器的主类,以便它在web应用程序内部工作? 我目前定义了一个,它在标记为的方法中加载资源。虽然这是有效的,但它会随着每个请求初始化。 我尝试将添加到应用程序中,但这导致了错误: 我的做法是完全错误的吗?或者如何创建这样一个系统,作为可部署的war运行? *编辑* 通过使用ServletContext