小编UNd*_*dss的帖子

401在访问资源时未经授权以编程方式创建azure应用程序

我必须代表用户注册azure应用程序.我使用Azure Graph API执行以下操作:

  1. 用所需资源创建应用程序
  2. 为注册的应用创建服务主体
  3. 为具有所需范围的服务主体创建OAuth2PermissionGrant实体

之后我成功获得了创建的upp的access_token.但遗憾的是,当我尝试使用该令牌访问O365资源时,返回了401 Unauthorized.没有任何json'ed错误!

HTTP/1.1 401未经授权
的Cache-Control:无缓存
杂注:无缓存
的Content-Length:0
截止日期:-1
服务器:Microsoft-IIS/8.5
服务器:Microsoft-IIS/8.5
WWW验证:承载
X-ASPNET-版本:4.0.30319
X-Powered-By:ASP.NET
X-Powered-By:ASP.NET
日期:星期四,2015年12月10日11:58:59 GMT

... 而已!

接下来我去了Azure门户 - 一切都好.经过几次实验后,我注意到access_token在通过门户网站(甚至化妆品)进行任何更改后变为有效.

所以我比较使用JWT解码器的令牌,发现Scopes不包括在内:

图片 - 在门户网站发生变化之前的令牌

图片 - 在门户网站中更改后的令牌

另外我注意到更改后覆盖了OAuth2PermissionGrant实体.


我使用了以下Web资源和库:

  1. 授权库:ADAL
  2. Access for Graph API库:www.nuget.org/packages/Microsoft.Azure.ActiveDirectory.GraphClient
  3. 完整的GraphClient示例列表可以在这里找到github.com/Azure-Samples/active-directory-dotnet-graphapi-console/blob/master/GraphConsoleAppV3/Program.cs

下面我附加了以编程方式创建app的代码.我也可以附上提琴日志和其他信息.

        ActiveDirectoryClient activeDirectoryClient;
        string clientSecret = "...hidden...";
        string name = "O365 auto created client";
        try
        {
            activeDirectoryClient = AuthenticationHelper.GetActiveDirectoryClientAsUser();

            var appObject = new Application
                {
                    DisplayName = "O365 auto created client",
                    Homepage = "https://sign",
                    LogoutUrl …
Run Code Online (Sandbox Code Playgroud)

azure office365 azure-active-directory adal azure-ad-graph-api

5
推荐指数
0
解决办法
452
查看次数

以随机顺序迭代具有相同数量的1(或0)的二进制数

我需要以随机顺序生成具有相同数量的1(或0)的二进制数.
有谁知道固定长度二进制数的任何有效算法?2个1位和4位数的示例(只是为了更清楚):

1100
1010
1001
0110
0101
0011
Run Code Online (Sandbox Code Playgroud)

更新无 重复的随机顺序非常重要.需要二进制数的序列,而不是单个排列.

algorithm math

4
推荐指数
1
解决办法
1030
查看次数